從外層的函數或者匿名函數返回 , 接下去的程式碼執行不到
從外層函數 foo() return , 接下來的循環不會被執行
fun foo() {
val list = mutableListOf<Int>(1,2,3,4,5,6,7)
for (i in list){
if(i == 4) return
println(i)
}
}
fun main(args: Array<String>){
foo()
// 1
// 2
// 3
}
從外層函數 foo() return , 接下來的循環不會被執行
fun foo() {
val list = mutableListOf<Int>(1,2,3,4,5,6,7)
list.forEach {
if(it == 4) return
println(it)
}
}
fun main(args: Array<String>){
foo()
// 1
// 2
// 3
}
返回標籤處 inner , Array item 等於 2 時 ,從內層函數 forEach() 返回 , 並不是像上面 返回 最外層函數 會整個函數結束 , 還是會繼續下一輪
fun main(){
val ints = arrayOf(1, 2, 3, 4)
ints.forEach inner@ {
if (it == 2) return@inner
println(it)
}
}
// 1
// 3
// 4
終止外層包圍他的循環, 接下去的程式碼執行不到
當 i == 6 會打破這個循環 ,因此接下來的循環都不會執行
範例 1
fun main(args: Array<String>) {
for (i in 1..10) {
if (i == 6) break
println(i)
}
}
//1
//2
//3
//4
//5
範例 2
同上 , 當循環全部執行完,輪到執行 println("Down the implicit lable") 會打印 Down the implicit lable
fun foo(){
for (i in 0 until 10){
if (i == 6) break
println(i)
}
println("Down the implicit lable")
}
fun main (){
foo()
}
// 0
// 1
// 2
// 3
// 4
// 5
// Down the implicit lable
範例 1.
當 i == 2 會打破 first 也就是最外層的循環, 當最外層結束了,整個循環也就結束
fun main(args: Array<String>) {
first@ for (i in 1..4) {
second@ for (j in 1..2) {
println("i = $i; j = $j")
if (i == 2) break@first
} } }
// result :
// i = 1; j = 1
// i = 1; j = 2
// i = 2; j = 1
範例 2.
當 i == 2 會打破 second 也就是內層的循環,內層循環被結束掉, 但外層循環還會繼續執行下一次循環 , 當外層循環繼續下一次循環, 會再進行一個內層循環。
fun main(args: Array<String>) {
first@ for (i in 1..4) {
second@ for (j in 1..2) {
println("i = $i; j = $j")
if (i == 2) break@second
} } }
// result :
// i = 1; j = 1
// i = 1; j = 2
// i = 2; j = 1
// i = 3; j = 1
// i = 3; j = 2
// i = 4; j = 1
// i = 4; j = 2
接下去的程式碼執行不到 ,包圍他的外層循環會繼續下一次
範例1 (試著比較 break 範例 )
當 i == 6 會跳過這次的循環 ,因此接下來一行
println(i) 不會執行, 不會打印出 6 ,再進行
下一輪的循環。
fun main(args: Array<String>) {
for (i in 1..10) {
if (i == 6) continue
println(i)
}
}
// 1
// 2
// 3
// 4
// 5
// 7
// 8
// 9
// 10
範例2 (試著比較 break 範例 )
同上 , 當循環全部執行完,輪到執行 println("Down the implicit lable") 會打印 Down the implicit lable ,
fun foo(){
for (i in 0 until 10){
if (i == 6) continue
println(i)
}
println("Down the implicit lable")
}
fun main (){
foo()
// 0
// 1
// 2
// 3
// 4
// 5
// 7
// 8
// 9
// Down the implicit lable
}
當 i == 3 && j == 2 時 , here 所代表的外層循環會跳過(i == 3)這次循環 ,繼續下一輪循環(i == 4)。
fun main(args: Array<String>) {
here@ for (i in 1..5) {
for (j in 1..4) {
if (i == 3 && j == 2) continue@here
println("i = $i; j = $j")
} } }
// result :
// i = 1; j = 1
// i = 1; j = 2
// i = 1; j = 3
// i = 1; j = 4
// i = 2; j = 1
// i = 2; j = 2
// i = 2; j = 3
// i = 2; j = 4
// i = 3; j = 1
// i = 4; j = 1
// i = 4; j = 2
// i = 4; j = 3
// i = 4; j = 4
// i = 5; j = 1
// i = 5; j = 2
// i = 5; j = 3
// i = 5; j = 4