Skip to content

Commit d2edaea

Browse files
committed
[1.7.0-feature] for/forEach循环中使用Label标签模拟break、continue功能
1 parent e2dde32 commit d2edaea

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package org.ninetripods.mq.study.function
2+
3+
class forAndforEachWithLabel {
4+
5+
6+
/**
7+
* for循环中使用,执行结果:
8+
* //break
9+
* i: 1
10+
* i: 2
11+
* 循环外继续执行
12+
* //continue
13+
* i: 1
14+
* i: 2
15+
* i: 4
16+
* i: 5
17+
* 循环外继续执行
18+
* //return
19+
* i: 1
20+
* i: 2
21+
*
22+
*/
23+
fun forControl() {
24+
for (i in 1..5) {
25+
if (i == 3) break //break continue return
26+
println("i: $i")
27+
}
28+
println("循环外继续执行")
29+
}
30+
31+
/**
32+
* 嵌套for循环中使用
33+
* //break
34+
* i: 1
35+
* j: 1
36+
* j: 2
37+
* 循环外继续执行
38+
*
39+
* //continue
40+
* i: 1
41+
* j: 1
42+
* j: 2
43+
*
44+
* i: 2
45+
* j: 1
46+
* j: 2
47+
* 循环外继续执行
48+
*/
49+
fun forNestedControl() {
50+
loop@ for (i in 1..2) {
51+
println("i: $i")
52+
for (j in 1..5) {
53+
if (j == 3) break@loop //break continue
54+
println("j: $j")
55+
}
56+
}
57+
println("循环外继续执行")
58+
}
59+
60+
/**
61+
* Label标签
62+
*/
63+
fun labelExam() {
64+
loop@ for (i in 1..5) {
65+
//...
66+
}
67+
}
68+
69+
70+
/**
71+
* forEach中退出循环,模拟break的
72+
*/
73+
fun forEachControl() {
74+
run loop@{
75+
listOf(1, 2, 3, 4, 5).forEach {
76+
if (it == 3) return@loop
77+
println("it:$it")
78+
}
79+
println("循环外继续执行")
80+
}
81+
}
82+
}

0 commit comments

Comments
 (0)