4.循环控制
-
break和continue标签
我们在kotlin中,通过
xxx@
的方式,即任意字符串加@
结尾的方式来定义循环标签,一般与for
循环结合起来用,比如:loop1@ for (i in 1..20) { println("i $i") loop2@ for (j in 1..10) { println("j $j") if (j > 5) { break@loop1 } loop3@ for (k in 1..5) { println("k $k") if (k > 2) { continue@loop2 } } } }
我们可以通过具体制定的条件来做
break
或者是continue
-
repeat
方法重复执行几次
repeat(5){ i -> println("循环运行第${i+1}次。") } =======等同于 for(int i=0;i<5;i++)
-
-
标签返回
我们先来看一段如下的代码
fun test() { var array = arrayListOf(1,2,3) array.forEach { if(it == 1){ return } } }
首先,
forEach
后面直接跟大括号是个lambda表达式,如果直接在IDE中进行编辑的话,在lambda表达式中,如果直接输入return
他会提示你需要直接return
还是return@forEach
实际上比较明显了,直接return
是跳出整个方法体,而return@forEach
只是跳出lambda表达式。同样的,我们可以直接在lambda的表达式大括号之前加上
xxx@
来自定义跳转标签,或者直接不使用lambda,而在forEach
后直接添加方法等等,均会有不同的情况。fun foo() { ints.forEach lit@ { if (it == 0) return@lit print(it) } } fun foo() { ints.forEach(fun(value: Int) { if (value == 0) return print(value) }) }
注意一下,
return@a 1
表示返回给a@这个lambda表达式1这个值。
网友评论