上图内容是 kotlin 中文网文档集合部分的目录,从目录可以看出,提供的函数式相当丰富的。
如此多的函数,难道没有合适的吗?当然有 。下面使用takeWhile
这个函数来实现上述的问题:
fun testForEach() {
listOf(0, 1, 2, 3, 4, 5).takeWhile { it != 2 }.forEach { println(it) }
------------输出---------------
------------------------------
takeWhile 表示从头开始取,一直取到不满足条件的,所以从头开始2之前的元素都被取出来了。使用集合框架api的就可以很轻松的搞定。
上面我说的这个例子可能有些牵强,但我觉得这个值得我们去思考,当我们去处理一个集合的时候,可以先想想集合框架提供的函数是否可以解决,以函数式编程的方式,而不是在 forEach 中找 break/continue 的替代方案,毕竟 kotlin 也是支持函数式编程的语言,我们可以用函数式编程风格操作集合代替以前的方案。
返回与跳转:break 与 continue - Kotlin 语言中文站
取集合的一部分 - Kotlin 语言中文站
forEach的continue 和break 如何写
listOf(1, 2, 3, 4, 5).forEach {
if (it == 3) return@forEach
print("$it ")
println("\n")
run breaking@{
listOf(1, 2, 3, 4, 5).forEach {
if (it == 3) return@breaking