我想知道处理这种情况的最佳方法是什么classPerson(varname:String?=null,varage:Int?=null){funtest(){if(name!=null&&age!=null)doSth(name,age)//smartcastimposible}fundoSth(someValue:String,someValue2:Int){}}调用doSth方法并确保name和age为ntnull的最简单方法是什么?我正在寻找一些简单的东西,比如我会简单地使用let的可变场景name?.let{doSth(it)} 最佳答案
我有一个WebView。我想打电话publicvoidevaluateJavascript(Stringscript,ValueCallbackresultCallback)这个方法。这里是ValueCallback接口(interface):publicinterfaceValueCallback{/***Invokedwhenthevalueisavailable.*@paramvalueThevalue.*/publicvoidonReceiveValue(Tvalue);};这是我的kotlin代码:webView.evaluateJavascript("a",ValueCal
我正在考虑一个允许Map的函数。对象被视为Map通过应用单个函数进行类型推断。我对Kotlin中的转换函数非常陌生,并尝试了各种filter和filterValuesfilterNot在map上像这样:valinput=mapOf(Pair("first",null))valfiltered:Map=input.filter{it.value!=null}其中任何一个都无法编译input.filterValues{it!=null}input.filterNot{it.value==null}input.filterNot{it.valueisNothing}我似乎能得到的最接近的是应
在Kotlin中,标题和正文都是可选的;如果类没有主体,可以省略花括号。所以我们可以定义类,classEmpty这种类有什么用? 最佳答案 您可以将它用于一些自定义异常:classEmpty:Exception()或作为markerinterface:interfaceEmpty或作为dataclass:dataclassEmpty(vals:String)或作为markerannotation:annotationclassEmpty~这很好post阅读。 关于Kotlin-没有bod
我在Kotlin中的Math类中添加了一个函数,但我无法使用它,我之前使用MutableList做过这个,它可以工作,但我不能用数学类。funMath.divideWithSubtract(num1:Int,num2:Int)=Math.exp(Math.log(num1.toDouble()))-Math.exp(Math.log(num2.toDouble())) 最佳答案 您不能在静态级别上在Math上使用此扩展,因为扩展仅适用于实例。edit:由于Math无法实例化,因此您将无法在其上使用扩展。如果您真的希望将该方法作为扩展
在Kotlin中,我有两个列表:valx:List=listOf(1,2,3,4,5,6)valy:List=listOf(2,3,4,5,6,7)我如何获得:valz:List=3,5,7,9,11,13不使用循环? 最佳答案 假设两个列表具有相同的大小:使用zipvalsum=x.zip(y){xv,yv->xv+yv}使用简单的map和mapIndexedvalsum=(0untilx.size).map{x[it]+y[it]}//orvalsum=x.mapIndexed{index,xv->xv+y[index]}当大小
我想在多个类中使用这个函数:funT?.ifNull(function:(T?,s:String)->Unit){}我怎样才能做到这一点?这就是我想使用它的方式:classA{funT?.ifNull(function:(T?,s:String)->Unit){}}classB{constructor(){vala=A()//Iwanttousethefunctionhere}} 最佳答案 如果您将扩展函数定义为A类的成员,则该扩展函数只能在A的上下文中使用。这意味着,您当然可以直接在A中使用它。但是,从另一个类B来看,它不是直接可
我从Kotlin开始,但遇到了一个问题。我有三个常量(我们称它们为VAL_A、VAL_B和VAL_C),我正在做这个赋值:varvariable=if(value我想使用whenblock而不是ifelse,但我不知道如何处理valueVAR_C。谢谢你,对不起我的英语! 最佳答案 您可能正在寻找的理想语法是when(value){valueAvalueBvalueCelse->valueD}很遗憾,这是不可能的,因为comparisonoperatorsareoperatoroverloads对于需要接收器的功能:value与相同
我想将字符串从“abcde”交换为“bcdea”。所以我在Kotlin中编写了如下代码varprevResult="abcde"vartmp=prevResult[0]for(iin0..prevResult.length-2){prevResult[i]=prevResult[i+1]//ErroronpreveResult[i]}prevResult[prevResult.length-1]=tmp//ErroronpreveResult[prevResult.lengt-1]如上述注释行所述,它会出错。我做错了什么?我怎样才能解决这个问题并得到我想要的?
我有一个utilKotlin类,我在其中设置工具栏标题、隐藏或显示工具栏取决于fragment:classMyToolbarUtils(){funhideToolbar(activity:Activity){(activityasMainActivity).supportActionBar!!.hide()}funshowToolbar(activity:Activity,tag:String){setToolbarTitle(tag,activity)(activityasMainActivity).supportActionBar!!.show()}funsetToolbarTit