IF 表达式
一个 if 语句包含一个布尔表达式和一条或多条语句。它与在Java中的语法其实并没有什么区别。
-
下面是一般用法
fun ifControlStream(a:Int){ if(a>0) { print("a >0") }else{ print("a<=0") } }
-
或者作为表达式
val max = if (a > b) a else b
这也说明我也不需要像Java那种有一个三元操作符,因为我们可以使用它来简单实现
-
还可以这样
val max = if (a > b) { print("Choose a") a } else { print("Choose b") b }
-
与区间联用。基本语法一节中我们提到了区间,即in关键字。
fun main(args: Array<String>) { val x = 5 val y = 9 if (x in 1..8) { println("x 在区间内") } }
Note:in表示的是闭合区间,上面代码中的判断语句相当于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链。 如果不提供参数,所有的分支条件都是简单的布尔表达式,而当一个分支的条件为真时则执行该分支:
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")
}
网友评论