前言
'break' and 'continue' are only allowed inside a loop
"break"和"continue"只能在循环中使用,forEach实际上是一个匿名函数
只有是循环才会有以下说法:
- return. 默认情况下,从最近的封闭函数或匿名函数返回
-By default returns from the nearest enclosing function or anonymous function.() - break. .(终止最近的封闭循环)
-Terminates the nearest enclosing loop.(终止最近的封闭循环) - continue. (继续执行最近的封闭循环的下一步)
-Proceeds to the next step of the nearest enclosing loop.(继续执行最近的封闭循环的下一步)
一 . 在java和Kotlin的 普通for循环 和 增强for循环 里面return、break、continue的含义
举例:
kotlin
private fun forTest() {
val list = listOf("one", "two", "three", "four", "five")
list.let {
for (value in list) {
if (value == "three") {
"循环满足条件 -> $value".i()
continue // 结束很次循环
// break // 结束本次循环,并跳出循环
// return // 结束本次循环,并跳出循环,并跳出forTest方法体
// return@let // 并跳出let方法体,继续往下执行
}
"结束单次循环 -> $value".i()
}
"结束for循环 -> end for".i()
}
"结束let方法 -> end let".i()
}
continue
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束单次循环 -> four
I/=={========>: 结束单次循环 -> five
I/=={========>: 结束for循环 -> end for
I/=={========>: 结束let方法 -> end let
I/=={========>: 结束测试方法 -> end test
break
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束for循环 -> end for
I/=={========>: 结束let方法 -> end let
I/=={========>: 结束测试方法 -> end test
return
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束测试方法 -> end test
return@let
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束let方法 -> end let
I/=={========>: 结束测试方法 -> end test
小结:
1、break: 停止循环,跳出循环,但只能结束一层循环。
2、continue:结束的是本次循环,将接着开始下一次循环。
3、return:同时结束其所在的循环和其外层循环。
二. 在Kotlin的forEach里面return、break、continue的含义
举例:
kotlin
private fun forEachTest() {
val list = listOf("one", "two", "three", "four", "five")
list.let {
list.forEach { value ->
if (value == "three") {
"循环满足条件 -> $value".i()
// continue // 不支持
// break // 不支持
return@forEach //结束很次循环
// return@let // 并跳出let方法体,继续往下执行
// return //结束本次循环,并跳出循环,forEachTest
}
"结束单次循环 -> $value".i()
}
"结束for循环 -> end for".i()
}
"结束let方法 -> end let".i()
}
return@forEach
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束单次循环 -> four
I/=={========>: 结束单次循环 -> five
I/=={========>: 结束for循环 -> end for
I/=={========>: 结束let方法 -> end let
I/=={========>: 结束测试方法 -> end test
return@let
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束let方法 -> end let
I/=={========>: 结束测试方法 -> end test
return
I/=={========>: 结束单次循环 -> one
I/=={========>: 结束单次循环 -> two
I/=={========>: 循环满足条件 -> three
I/=={========>: 结束测试方法 -> end test