IF 表達式
一個 if 語句包含一個布爾表達式和一條或多條語句跌帐。它與在Java中的語法其實并沒有什么區(qū)別。
-
下面是一般用法
fun ifControlStream(a:Int){ if(a>0) { print("a >0") }else{ print("a<=0") } }
-
或者作為表達式
val max = if (a > b) a else b
這也說明我也不需要像Java那種有一個三元操作符性锭,因為我們可以使用它來簡單實現(xiàn)
-
還可以這樣
val max = if (a > b) { print("Choose a") a } else { print("Choose b") b }
-
與區(qū)間聯(lián)用〕鹉蹋基本語法一節(jié)中我們提到了區(qū)間,即in關鍵字秸讹。
fun main(args: Array<String>) { val x = 5 val y = 9 if (x in 1..8) { println("x 在區(qū)間內") } }
Note:in表示的是閉合區(qū)間,上面代碼中的判斷語句相當于Java中的
x>=1&&x<=8
When 表達式
when 類似其他語言的 switch 操作符雅倒。用法大致有:
-
當作語句使用
fun whenStream(x:Int){ when(x){ in 1..8 -> print("x 在1-8") in 9..20 -> print("x 在9-20") else->{ print("x 大于20") } } }
else 相當于是Java switch語句中的default.
如果其他分支都不滿足條件將會求值 else 分支璃诀。
如果很多分支需要用相同的方式處理,則可以把多個分支條件放在一起屯断,用逗號分隔:when (x) { 0, 1 -> print("x == 0 or x == 1") else -> print("otherwise") }
-
作為表達式
fun hasPrefix(x: Any) = when(x) {
is String -> x.startsWith("prefix")
else -> false
}
when 也可以用來取代 if-else if鏈。 如果不提供參數(shù)侣诺,所有的分支條件都是簡單的布爾表達式殖演,而當一個分支的條件為真時則執(zhí)行該分支:
when {
x.isOdd() -> print("x is odd")
x.isEven() -> print("x is even")
else -> print("x is funny")
}
Demo
val set = setOf<String>("mac,android,windows,iOS")
when{
"linux" in set -> print("linux in it ")
"iOS" in set-> print("iOS is in os set")
}