如何在 Kotlin 中接收 null 作为函数类型的参数

How can I receive null as a parameter in function type in Kotlin

我想知道我们如何在 Kotlin 中接收 null 值作为函数类型的参数。 这里附上代码:

fun main() {
    println(sum?.invoke(null,20))
}

typealias Arithmatic = ((Int, Int) ->  Int)?
val sum : Arithmatic = { ValueA, ValueB -> ValueA + ValueB }

与 Kotlin 中的所有变量一样,函数引用通常不能为 null。为了允许空值,你必须在类型定义的末尾添加一个 ?,像这样:

在您给出的示例中,您提到 ValueAInt 类型。因此,在那种情况下,您不能将 null 作为参数传递。

如果你想把null传给ValueA,你必须提到ValueA确实是nullable。我们可以通过在变量类型之后放置 ? 来做到这一点。

而且在函数体中,你必须提到如果 ValueAnull 时如何执行。例如,您可以这样更改代码:

typealias Arithmatic = ((Int?, Int) ->  Int)
val sum : Arithmatic = { ValueA, ValueB -> ValueA ?: 0 + ValueB }

fun main() {
    println(sum.invoke(null,20))

}

这里我把Int改成了Int?,意思是说这个参数可以是null。此外,在 ValueA ?: 0 中,我是说如果 ValueA 不是 null,则使用它,如果是 null,则使用 0

您可以在此处阅读有关空安全的更多信息:https://kotlinlang.org/docs/null-safety.html