如何在 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。为了允许空值,你必须在类型定义的末尾添加一个 ?
,像这样:
在您给出的示例中,您提到 ValueA
是 Int
类型。因此,在那种情况下,您不能将 null 作为参数传递。
如果你想把null
传给ValueA
,你必须提到ValueA
确实是nullable。我们可以通过在变量类型之后放置 ?
来做到这一点。
而且在函数体中,你必须提到如果 ValueA
是 null
时如何执行。例如,您可以这样更改代码:
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
我想知道我们如何在 Kotlin 中接收 null 值作为函数类型的参数。 这里附上代码:
fun main() {
println(sum?.invoke(null,20))
}
typealias Arithmatic = ((Int, Int) -> Int)?
val sum : Arithmatic = { ValueA, ValueB -> ValueA + ValueB }
与 Kotlin 中的所有变量一样,函数引用通常不能为 null。为了允许空值,你必须在类型定义的末尾添加一个 ?
,像这样:
在您给出的示例中,您提到 ValueA
是 Int
类型。因此,在那种情况下,您不能将 null 作为参数传递。
如果你想把null
传给ValueA
,你必须提到ValueA
确实是nullable。我们可以通过在变量类型之后放置 ?
来做到这一点。
而且在函数体中,你必须提到如果 ValueA
是 null
时如何执行。例如,您可以这样更改代码:
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