1、For 循环 代码示例:
首先生命了一个数组items,采用for 循环遍历这个数组并打印出来。
第二个for循环,打印的时候用到了 $ 引用,在字符串一节中(Kotlin 入门第四天:基本数据类型及其转换 —— 字符、bool、数组、位操作符)我们已经了解过。
//for 循环
fun fOr() {
val items = listOf("apple", "banana", "kiwi")
for (item in items) {
println(item)
}
for (index in items.indices) {
println("item at $index is ${items[index]}")
}
}
输出结果为
I/System.out: apple
I/System.out: banana
I/System.out: kiwi
I/System.out: item at 0 is apple
I/System.out: item at 1 is banana
I/System.out: item at 2 is kiwi
2、While 循环控制
while 循环很好理解,跟java类似,分为 while,及 do while
两次循环,依次输出5,4,3,2,1
fun wHile() {
println("while 的使用")
var x = 5
while (x > 0) {
println(x--)
}
println("do ... while 的使用")
var y = 5
do {
println(y--)
} while (y > 0)
}
3、break - continue 的循环控制
/**break continue*/
fun bReak() {
for (i in 1..10) {
if (i == 3) continue
println(i)
if (i > 6) break
}
}
输出结果为
I/System.out: 1
I/System.out: 2
I/System.out: 4
I/System.out: 5
I/System.out: 6
I/System.out: 7
4、需要重点了解一下loop的使用,这里面通过@添加了标签
/**loop*/
fun lOop() {
loop@ for (i in 1..10) {
println("测试loop: $i")
if (i > 6) break@loop //直接写break也可以,意味着跳出当前循环,break @loop 意味着,跳出标签处的循环
}
}
//直接写break,意味着跳出当前循环,break @loop 意味着,跳出标签处的循环
5、标签
/**标签*/
fun foo() {
print("测试 lambda 标签")
var ints = intArrayOf(1,2,3)
ints.forEach lit@{
if (it == 0) return@lit
print(it)
}
}
return@lit,意思是 将标签为lit的循环终止
6、lambda表达式里面的循环控制
这是我们这几天第一次出现并使用lambda表达式
/** lambda 表达式*/
fun lAmbda() {
print("测试 lambda 表达式")
var ints = intArrayOf(1,2,3)
ints.forEach (fun(value: Int) {
if (value == 0) return
println(value)
})
}
我们可以将上述的循环进行一下结构上的拆分,以便于更好理解:
/** lambda 表达式*/
fun lAmbda() {
print("测试 lambda 表达式")
var ints = intArrayOf(1,2,3)
ints.forEach {
test(it)
}
}
fun test(value: Int) {
if (value == 0) return
println(value)
}
lAmbda() 函数执行的结果跟 上一段lAmbda函数是一致的。结果如下
I/System.out: 测试 lambda 表达式1
I/System.out: 2
I/System.out: 3