If表达式
在 Kotlin 中,if是一个表达式,即它会返回一个值。 因此就不需要三元运算符(条件 ? 然后 : 否则),因为普通的 if 就能胜任这个角色。
// 传统用法 var max = a if (a < b) max = b // With else var max: Int if (a > b) { max = a } else { max = b } // 作为表达式 val max = if (a > b) a else b //分支可以为代码块,最后的表达式作为该块的值 val max = if (a > b) { print("Choose a") a } else { print("Choose b") b }
when表达式
when取代了C语言的switch的操作符。
when (x) { 0, 1 -> print("x == 0 or x == 1") else -> print("otherwise") }
- when 将它的参数与所有分支顺序比较,直到某个分支满足条件。
- 如果多个分支需要相同的方式处理,可以放在一起用逗号分隔。
- 可以用任意表达式(而不只是常量)作为分支条件
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
} - 我们也可检测一个值在(in)和不在(!in)一个区间或者集合中。
when (x) {
in 1..10 -> print("x is in the range")
in validNumbers -> print("x is valid")
!in 10..20 -> print("x is outside the range")
else -> print("none of the above")
} - when也可以能检测一个值(is)或者不是(!is)一个特定的类型的值。 注意:由于智能转换,你可以访问该类型的方法与属性而无需任何额外的检测。
fun hasPrefix(x: Any) = when(x) {
is String -> x.startsWith("prefix")
else -> false
} - Kotlin1.3之后,可以将when的主语捕获到变量中
fun Request.getBody() =
when (val response = executeRequest()) { is Success -> response.body is HttpError -> throw HttpException(response.status) }</pre>
For循环
和Swift类似。具体参考Kotlin For循环
while循环
照常使用
返回和跳转
Kotlin 有三种结构化跳转表达式
- return。默认从最直接包围它的函数或者匿名函数返回。
- break。终止最直接包围它的循环。
- continue。继续下一次最直接包围它的循环。
- break和continue标签:
- 在 Kotlin 中任何表达式都可以用标签(label)来标记。 标签的格式为标识符后跟@符号,例如:abc@、fooBar@都是有效的标签(参见语法)。 要为一个表达式加标签,我们只要在其前加标签即可。
- 作用:用标签来限制break和continue(可以根据标签来控制多层循环中,指定的break和continue)
loop@ for (i in 1..100) {
for (j in 1..100) {
}if (……) break@loop
}
- 返回到标签:返回到制定标签的方法。