gpt4 book ai didi

kotlin - 什么时候出现这种Kotlin无效安全性?

转载 作者:行者123 更新时间:2023-12-02 13:03:13 25 4
gpt4 key购买 nike

我是 Kotlin 学习者的一天。我从https://kotlinlang.org/docs/reference/basic-syntax.html获得了这段代码,然后进行了修改以测试null安全性(https://kotlinlang.org/docs/reference/null-safety.html)

我每一行都有错误。
此Kotlin无效安全性在何时以及如何修复时有什么问题?

fun describe(obj?: Any): String =
when(obj?) {
1 -> "one"
"hello" -> "greeting"
is Long -> "long"
!is String -> "not String"
is null -> "null"
else -> "unknown"
}


fun main() {
println(describe(1))
println(describe("Hello"))
println(describe(1000L))
println(describe(2))
println(describe(null))
println(describe("other"))
}

最佳答案

问号表明类型上可以为空,而不是变量名。您还使用了is null,这是错误的,因为null是一个值,而不是类型。这是您所做的更改后的代码,可以编译并运行:

fun describe(obj: Any?): String =
when(obj) {
1 -> "one"
"hello" -> "greeting"
is Long -> "long"
!is String -> "not String"
null -> "null"
else -> "unknown"
}



fun main() {
println(describe(1))
println(describe("Hello"))
println(describe(1000L))
println(describe(2))
println(describe(null))
println(describe("other"))
}

结果:
one
unknown
long
not String
not String
unknown

似乎您想将 null的支票上移,因此您的测试使 null值达到了那么高。照原样, null不是字符串,因此 null值为“not String”。

关于kotlin - 什么时候出现这种Kotlin无效安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56013916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com