仅当参数不为 null 时才将参数传递给函数

Old*_*ran 8 default-parameters kotlin

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

目前我正在使用 let:

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

val myString:String? = getNullableString()

val myFunResult = myString.?let{myFun(it)}?:myFun()
Run Code Online (Sandbox Code Playgroud)

这是很冗长的,并且当有多个可选参数时就不可能了。我需要类似的东西

val myFunResult = myFun(myString?:default)
Run Code Online (Sandbox Code Playgroud)

有没有一种实用的方法可以做到这一点?

jsa*_*mol 1

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

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

val myFunResult = myFun(myString)
Run Code Online (Sandbox Code Playgroud)