tes*_*est 1 typechecking kotlin
我有一个可以为空的实例。狐狸的例子
var str: String? = null
Run Code Online (Sandbox Code Playgroud)
所以我需要检查 str 是否是字符串。如果我使用 is 运算符,是否需要检查 null。第一个选项:
if(str is String) {}
Run Code Online (Sandbox Code Playgroud)
第二个选项:
if(str != null && str is String) {}
Run Code Online (Sandbox Code Playgroud)
请帮助我使用哪种方式更好?
该is运算符是安全的,如果您提供 null 实例,则返回 false
在某个地方,你必须进行 nullcheck。Kotlin 提供了许多强制非空的方法:
使用非空类型:
var nonNull : String = ""
var nullable : String? = "" // notice the ?
nullable = null // works fine!
nonNull = null // compiler error
Run Code Online (Sandbox Code Playgroud)
如果遇到可为空的类型,您可以使用let {} ?: run {}构造来解包它并使用不可为空的类型执行代码:
nullable?.let { // use "it" to access the now non-null value
print(it)
} ?: run { // else
print("I am null! Big Sad!")
}
Run Code Online (Sandbox Code Playgroud)
Kotlin 严格区分 nullableT?和 nonnull T。T尽可能使用以避免空检查。
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |