我需要将可为空的参数传递给仅接受非可为空的对象,但已定义默认值的函数。

目前,我正在使用let:

fun myFun(a:String = "qqq"): Whatever {...}

val myString:String? = getNullableString()

val myFunResult = myString.?let{myFun(it)}?:myFun()

这很冗长,而且当可选参数多时就不可能了。
我需要类似的东西
val myFunResult = myFun(myString?:default)

有没有可行的方法?

最佳答案

您可以允许将可为空的值作为参数传递到函数中,将命名的默认值更改为null并在函数体内设置实际的默认值:

fun myFun(a: String? = null) {
    val a = a ?: DEFAULT_VALUE
    // rest of the function
}

val myFunResult = myFun(myString)

10-08 03:14