if条件语句
Kotlin 提供了几种实现条件逻辑的机制,其中最常见的是 if-else 语句。如果 if 关键字后面括在圆括号内的表达式求值为 true,则会执行该分支中的代码(即,紧跟在后面的括在大括号内的代码)。否则,会执行 else 分支中的代码
if (x == 2) {
println("x等于2")
} else {
println("x不等于2")
}
在 Kotlin 中,if是一个表达式,即它会返回一个值。 因此就不需要三元运算符(条件 ? 然后 : 否则),因为普通的 if 就能胜任这个角色。
val max = if (a > b) a else b
println(max)
if 的分支可以是代码块,最后的表达式作为该块的值:
val max = if (a > b) {
print("max= a")
a
} else {
print("max= b")
b
}
如果你使用 if 作为表达式而不是语句(例如:返回它的值或者把它赋给变量),该表达式需要有 else 分支。
When 表达式
when 表达式取代了类 C 语言的 switch 语句。其最简单的形式如下:
var a = 2
when (x) {
1 -> print("x = 1")
2 -> print("x = 2")
else -> {
print("x既不是1也不是2")
}
}
when 将它的参数与所有的分支条件顺序比较,直到某个分支满足条件。 when 既可以被当做表达式使用也可以被当做语句使用。如果它被当做表达式, 符合条件的分支的值就是整个表达式的值,如果当做语句使用, 则忽略个别分支的值
如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔:如上面的代码1,2可以合并
var kotlin = 2
when (kotlin) {
1,2 -> print("x == 1 or x == 2" )
else -> { // 注意这个块
print("x既不是1也不是2")
}
}
我们可以用任意表达式(而不只是常量)作为分支条件
when (kotlin) {
x.toInt() -> print("x.toInt()" )
else -> { // 注意这个块
print("x is neither 1 nor 2")
}
}
我们也可以检测一个值在(in)或者不在(!in)一个区间或者集合中:
when (kotlin) {
in 1..10 -> print(" kotlin in 1..10")//或者是 !in
else -> {
print("x不在1..9区间内")
}
}
另一种可能性是检测一个值是(is)或者不是(!is)一个特定类型的值。注意: 由于智能转换,你可以访问该类型的方法与属性而无需任何额外的检测。
when (kotlin) {
is Int -> print(" kotlin is Int") //Kotlin是Int类型的
else -> {
print("Kotlin不是Int类型的")
}
}
when 也可以用来取代 if-else if链。 如果不提供参数,所有的分支条件都是简单的布尔表达式,而当一个分支的条件为真时则执行该分支:
when {
x>0 -> print("x 大于0")
x<0 -> print("x小于0")
else -> print("x等于0.")
}