如何解决如何在 Kotlin 的函数类型中接收 null 作为参数
我想知道如何在 Kotlin 中接收空值作为函数类型的参数。 我附上代码:
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
确实可为空。我们可以通过将 ?
放在变量类型之后来实现。
而且在函数体中,您必须提及如果 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。