kotlin 的Elvis 操作符

醉過才知酒濃發表於2018-12-03
當我們有一個可空的字串引用 str 時 ,我們需要獲取 str 的長度時
在Java中我們是:

int length = str != null ? str.length : 0複製程式碼
這樣當 str 為空時長度預設為 0

在kotlin中我們可以是用 if-else 表示式來完成 如下:

val length = if(str != null) str.length else 0複製程式碼
這個和java時等同的

不過在kotlin中 我們還可以使用 Elvis 操作符表達, 寫作 "?:" 如下:

val length = str?.length ?: 0複製程式碼
這行程式碼中 如果 ?: 左側的表示式非空,elvis 操作符就返回其左側表示式,否則返回右側表示式。
注意,當且僅當左側為空時,才會對右側表示式求值。

在kotlin中,因為 throw 和 return 都是表示式,所以它們也可以用再 elvis 表示式右側。這樣對我們而言會非常的方便, 例如,檢查函式引數 如下:

fun foo(node:Node):String?{   
    val parent = node.getParent() ?: teturn null    
    val name = node.name ?: throw IllegalArgumentException("name expected")
}複製程式碼


相關文章