If表达式
Kotlin中的 if
不同Java,它不仅仅只能作为一个判断语句,还能作为表达式,即它能返回一个值.
// 传统用法
var max = a
if (a < b) max = b
// With else
var max: Int
if (a > b) {
max = a
} else {
max = b
}
在Kotlin中,没有三元运算符,但是可以使用 if
表达式完成三元运算符功能
//Java中三元运算符
int max = a > b ? a : b ;
//Kotlin实现类似三元运算符功能
var max = if (a > b) a else b
注: Kotlin中 if
作为表达式,后面可接代码块,最后的表达式作为该块的返回值:
val max = if (a > b) {
print("Choose a")
a
} else {
print("Choose b")
b
}
注: 如果把 if
作为表达式使用,那么必须有 else
分支,这样才能确保 if
一定能返回一个值.
When 表达式
Kotlin中的 when
和 if
一样,既可以作为语句,也可以作为表达式.作为语句时,其相当于Java中的 switch
,作为表达式时,它的任何一个分支的代码块的最后一句表达式作为该分支的返回值,同时, when
作为表达式使用必须有 else
分支存在.
//作为语句
fun printAge(age: Int, adult: Array<Int>) {
when (age) {
1 -> println("age 1")
2, 3, 4, 5 -> println("small children")
in 15..20 -> println("teenagers")
in adult -> println("adults")
!in 50..100 -> println("not elders")
}
}
//作为表达式
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")
}
For 循环
for
循环可以对任何提供迭代器(iterator)的对象进行遍历,语法如下:
for (item in collection) {
//do your thing
}
for (index in arrays.indices)
println(arrays[index])
for ((index,value) in arrays.withIndex()){
println("arrays[$index]=$value")
}
While 循环
while
和 do..while
与Java用法一致.
循环中的break和continue
Kotlin中的 break
和 continue
基础用法与Java类似,其余完整用法请参见返回和跳转。
本文内容摘自:控制流