class ExampleUnitTest {
@Test
fun test1() {
println("===========for in==============")
for (i in 1..5) {
println(i)
}
//1
//2
//3
//4
//5
println("===========for in until==============")
for (i in 1 until 5) {
println(i)
}
//1
//2
//3
//4
println("==========for in===============")
val list1 = listOf(1, 2, 3, 4)
for (i in list1) {
println(i)
}
//1
//2
//3
//4
println("===========for in withIndex==============")
for ((index, value) in list1.withIndex()) {
println("$index : $value")
}
//0 : 1
//1 : 2
//2 : 3
//3 : 4
println("===========forEach==============")
list1.forEach {
println("========$it")
}
//========1
//========2
//========3
//========4
}
//跳跃语法
//Kotlin中引入了标签的概念,可以直接控制程序应该执行的代码是什么。
//标签后面用@标明。
//成对的标签可以自己定义
//================================return=====================================
@Test
fun return1() {
println("===========标签 return@forEach ==============")
val list1 = listOf(1, 2, 3, 4, 5)
list1.forEach {
//不执行后续
if (it == 4) return@forEach
println(it)
}
}
//===========标签 return@forEach ==============
//1
//2
//3
//5
@Test
fun return2() {
println("===========标签 return@lit ==============")
val list1 = listOf(1, 2, 3, 4, 5)
list1.forEach lit@{
//不执行后续
if (it == 4) return@lit
println(it)
}
}
//===========标签 return@lit ==============
//1
//2
//3
//5
@Test
fun return3() {
println("===========标签 return ==============")
val list1 = listOf(1, 2, 3, 4, 5)
list1.forEach(fun(i) {
if (i == 4) return
println(i)
})
}
//===========标签 return ==============
//1
//2
//3
//5
//================================break=====================================
@Test
fun break1() {
println("===========标签 break@loop ==============")
val list1 = listOf(1, 2, 3, 4)
val list2 = listOf(4, 3, 2, 1)
loop@ for (i in list1) {
for (j in list2) {
if (i == j) {
//结束循环
break@loop
} else {
println("$i ::::: $j")
}
}
}
}
//===========标签 break@loop ==============
//1 ::::: 4
//1 ::::: 3
//1 ::::: 2
@Test
fun break2() {
println("===========标签 break@loop ==============")
val list1 = listOf(1, 2, 3, 4)
val list2 = listOf(4, 3, 2, 1)
for (i in list1) {
loop@ for (j in list2) {
if (i == j) {
//结束循环
break@loop
} else {
println("$i ::::: $j")
}
}
}
}
//===========标签 break@loop ==============
//1 ::::: 4
//1 ::::: 3
//1 ::::: 2
//2 ::::: 4
//2 ::::: 3
//3 ::::: 4
//===============================continue======================================
@Test
fun continue1() {
println("===========标签 continue@loop ==============")
val list1 = listOf(1, 2, 3, 4)
val list2 = listOf(4, 3, 2, 1)
loop@ for (i in list1) {
for (j in list2) {
if (i == j) {
//进入下一轮循环
continue@loop
} else {
println("$i ::::: $j")
}
}
}
}
//===========标签 continue@loop ==============
//1 ::::: 4
//1 ::::: 3
//1 ::::: 2
//2 ::::: 4
//2 ::::: 3
//3 ::::: 4
@Test
fun continue2() {
println("===========标签 continue@loop ==============")
val list1 = listOf(1, 2, 3, 4)
val list2 = listOf(4, 3, 2, 1)
for (i in list1) {
ssss@ for (j in list2) {
if (i == j) {
//进入下一轮循环
continue@ssss
} else {
println("$i ::::: $j")
}
}
}
}
//===========标签 continue@loop ==============
//1 ::::: 4
//1 ::::: 3
//1 ::::: 2
//2 ::::: 4
//2 ::::: 3
//2 ::::: 1
//3 ::::: 4
//3 ::::: 2
//3 ::::: 1
//4 ::::: 3
//4 ::::: 2
//4 ::::: 1
}
测试二
class ExampleUnitTest2 {
@Test
fun test1() {
for (i in 1..5) {
for (j in listOf("a", "b", "c", "d")) {
if (j == "c") {
println()
break
} else {
print("$i===$j ")
}
}
}
}
//1===a 1===b
//2===a 2===b
//3===a 3===b
//4===a 4===b
//5===a 5===b
@Test
fun test2() {
loop@ for (i in 1..5) {
for (j in listOf("a", "b", "c", "d")) {
if (j == "c") {
println()
break@loop
} else {
print("$i===$j ")
}
}
}
}
//1===a 1===b
@Test
fun test3() {
for (i in 1..5) {
loop@ for (j in listOf("a", "b", "c", "d")) {
if (j == "c") {
println()
break@loop
} else {
print("$i===$j ")
}
}
}
}
//1===a 1===b
//2===a 2===b
//3===a 3===b
//4===a 4===b
//5===a 5===b
}