首先是for循環(huán)
最普通的for循環(huán):
for(i in 0..9){
println(i)
}
這里補(bǔ)充一個(gè)點(diǎn):
0..9 指的是[0,9]這個(gè)集合,0和9都包含。
0 until 9 指的是[0,9),包含0不包含9。
也可以用for循環(huán)遍歷集合中的值:
val list = listOf("Hello"," ", "World"," ",'!')
for(s in list){
print(s)
}
如果想要帶著index遍歷集合的話:
val fruits = listOf("蘋(píng)果","香蕉","橙子","西瓜")
for((index, element) in fruits.withIndex()){
println("第${index}種水果是$element")
}
還有一個(gè)比較特殊的forEach語(yǔ)法:
val list = listOf("Hello", "World",'!')
list.forEach{
print("$it ") //這里的it指代被遍歷的list中的值
}
While循環(huán)
while和do-while循環(huán)和java保持一致。
while(condition) {
doSomething()
}
do {
doSomething()
} while (condition)
Repeat語(yǔ)法
這是Kotlin相對(duì)于Java新加入的特性,取代for(int i=0;i<5;i++)用于簡(jiǎn)單的重復(fù)工作。
repeat(5){ i ->
println("循環(huán)運(yùn)行第${i+1}次。")
}
最后再說(shuō)說(shuō)跳躍語(yǔ)法
Kotlin中引入了標(biāo)簽的概念,可以直接控制程序應(yīng)該執(zhí)行的代碼是什么。
標(biāo)簽后面用@標(biāo)明。
loop@ for(i in 1..100){
for(j in 1..100){
if(...) break@loop
}
}
這段代碼中的break將會(huì)跳出帶有loop@標(biāo)簽的循環(huán)。continue和break的用法一樣。
還有就是return
fun foo() {
ints.forEach lit@ {
if (it == 0) return@lit
print(it)
}
}
fun foo() {
ints.forEach {
if (it == 0) return@forEach
print(it)
}
}
以上兩段return效果一樣。
還可以使用匿名函數(shù)直接返回值
fun foo() {
ints.forEach(fun(value: Int) {
if (value == 0) return
print(value)
})
}