Kotlin 空值處理

Demo

?

將類型標記爲可空,在Kotlin中變量默認非空,如果該變量可空,需要在類型後添加符號?

var str: String = null // 編譯器報錯

str變量值可能爲null的話,必須在變量類型後添加?

var str: String? = null // 編譯通過
?.安全調用符

str變量可能爲null

var str: String? = null // 編譯通過

當一個可空的變量直接調用API時,編譯器會報錯

str.toInt() // 編譯報錯

解決辦法是使用安全調用符?.調用API.

str?.toInt() // 編譯通過
// (?.)調用API相當於
if (str != null) {
    str.toInt()
}
安全調用符調用API後值的接收

當使用?.調用API後,返回值也是有可能爲null

// strToInt接收到可能爲null的值,但是strToInt變量當前是非空標記.
var strToInt: Int = str?.toInt() // 編譯錯誤

可以將strToInt也標記爲可空類型

var strToInt: Int? = str2?.toInt(); // 編譯通過

另外一種就是使用elvis操作符?:

// strToInt變量依然是非空類型,但是str2?.toInt()如果非空就取左側值,如果值爲空就取右側值(elvis操作符)
// 這樣一來strToInt接收的值肯定就不可能爲空了.
var strToInt: Int = str2?.toInt() ?: 0;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章