我从 Kotlin 开始并试图理解一些东西。
var foo: String = null
未按预期编译。
var foo: String? = null
应该是正确的语法并按预期进行编译。
那么为什么var foo = null
编译??
的类型foo
在这种情况下将被推断为Nothing?
,这是一个非常特殊的类型。简而言之,Nothing
是 Kotlin 中每个类型的子类型(因此Nothing?
是每个可为空类型的子类型),没有实例,并且可以用作永远无法返回的函数的返回类型。
虽然Nothing
不能有实例,null
本身类型Nothing?
,这就是为什么它可以分配给任何可为空的变量。
您可以更深入地了解Nothing
in the 官方文档, in 这篇优秀的 Medium 文章,并在本文涵盖整个 Kotlin 类型层次结构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)