Kotlin数据类和可空类型

Vic*_*cia 7 android kotlin data-class

我是Kotlin的新手,我不知道为什么编译器会抱怨这段代码:

data class Test(var data : String = "data")

fun test(){
  var test: Test? = Test("")
  var size = test?.data.length
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨test?.data.length,它说我应该这样做:test?.data?.length.但数据变量String不是String?,所以我不明白为什么我要把它放在?我想检查长度的时候.

hot*_*key 10

表达式test?.data.length相当于(test?.data).length,并且该test?.data部分可以为空:它是test.data或者null.因此获取它是不安全的length,但是你应该再次使用安全调用操作符:test?.data?.length.

可空性通过整个调用链传播:你必须将这些链写为a?.b?.c?.d?.e(也就是说,相当于(((a?.b)?.c)?.d)?.e),因为,如果其中一个左边部分为空,则其余的调用不能像值一样执行不是空的.