持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第31天,点击查看活动详情
Java中的控制流,在Kotlin中都有对应的实现,名字可能不太一样,功能上进行了扩展。
1、if-else表达式
在Java中,如果要在if-else表达式内返回一个值,必须加上return关键字。而在Kotlin中,表达式最后一行默认为返回值,可以在执行完相应操作后直接返回目标值,不需要加上return关键字。在Kotlin中没有三元操作符,但可以用if-else代替。如果把if-else当三元运算符使用,必须有else分支。
val max = if (a > b) a else b
2、for循环
for循环不像Java中for(;;)这样,只需要通过in关键字对目标对象进行遍历,直接获取遍历对象子项,目标对象可以是数组、列表、任何有迭代器的对象和整数区间。示例代码如下,item为遍历得到的子项元素。
for (item in list){
TODO()
}
遍历数字区间,以遍历0~9为例:
for (num in 0..9) {
TODO()
}
downTo关键字可以反序遍历数字区间,step指定跳过一定的步数,以反序遍历100~0,并且跳过10步为例:
for (num in 100 downTo 0 step 10) {
print("$num ")
}
代码运行结果:
100 90 80 70 60 50 40 30 20 10 0
indices关键字可以通过索引遍历数组或列表,示例代码如下,index为子项索引值。
for (index in list.indices) {
// TODO()
}
withIndex()可以通过索引、子项值遍历数组或列表,适用于需要同时获取索引和子项的情况。示例代码如下,index为索引值,item为子项
val list = arrayListOf<Int>()
for ((index, item) in list.withIndex()) {
// TODO()
}
3、while循环
Kotlin中的while(){}、do{}while()循环和Java中的使用方法基本是一样的,不在此赘述。
4、when表达式
when表达式对标Java的switch表达式,但功能更加丰富。
示例代码如下,分支条件如果有多个值用逗号分隔开,使用关键字in、!in检测是否在某个区间内,关键字is检测是否某种类型,如果没有满足的分支条件则走eles分支。该示例最终走的是!in 10..15分支。
val test = 5
when (test) {
0, 1, 2, 3 -> TODO()
4 -> TODO()
in 6..9 -> TODO()
!in 10..15 -> TODO()
is Int -> TODO()
else -> TODO()
}
除了上面的常规使用方法,分支条件还可以是表达式,如果when关键字后面不提供参数,可以用来代替if-else的使用,分支条件是bool表达式。