31DaysOfKotlin - Day4—when表達式

內容總結

when不僅僅的switch代替品,而是一個重大的升級版。when可以是一個語句,也可以是一個表達式,這就決定了他的用法很強大,很靈活,意味着駕駛它需要更多的學習成本。
when 將它的參數與所有的分支條件順序比較,直到某個分支滿足條件。
when被當做表達式, 符合條件的分支的值就是整個表達式的值(當分支是個代碼塊是,代碼塊的最後一行表達式的值就是整個表達式的值)

知識要點

可以沒有參數

所有的分支條件都是簡單的布爾表達式,而當一個分支的條件爲真時則執行該分支:

when {
    x.isOdd() -> print("x is odd")
    x.isEven() -> print("x is even")
    else -> print("x is funny")
}
// if 的寫法是
if (x.isOdd()) {
	print("x is odd")
} else if (x.isEven()) {
	xxxxx
} else {
   xxxxx
}

分支條件可以多個

多個分支條件用“,”分隔

when (x) {
    0, 1 -> print("x == 0 or x == 1")
    else -> print("otherwise")
}

分支條件可以是表達式

分支條件除了是常量,也可以是表達式(表達式的值是布爾值就可以)

when (x) {
	in 1..10 -> print("x is in the range") // 檢測一個值在(in)或者不在(!in)一個區間或者集合中
    in validNumbers -> print("x is valid")
    !in 10..20 -> print("x is outside the range")
    parseInt(s) -> print("s encodes x")
    is String -> x.startsWith("prefix")
    is String -> x.startsWith("prefix") //由於智能轉換,你可以訪問該類型的方法與屬性而無需任何額外的檢測。
    else -> print("s does not encode x")
}

參考文檔

發佈了231 篇原創文章 · 獲贊 123 · 訪問量 67萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章