Kotlin 条件控制知识
if操作符
- 三元操作符 val c = if (condition) a else b
- if表达式结果赋值给变量 val max = if(a>b){ a} else {b}
使用区间
var a = 10
if ( a in 1..10){
... // 成立
}
if ( a !in 1..5){
... // 成立
}
when 三种情况
类似于switch
num1 = 25
num2 = 22
when (num1){
10 -> print("num1 is 10")
20 -> print("num1 is 20")
12,13 -> print("num1 is 12 or 13") // 多个条件
in 20..30 -> print("num1 is in 20-30") // 支持区间判断
is Int ->print("num1 is Int") // 判断是否是某个类型
else -> print("num1 is $num1") //类似default
}
不带参数,类似于 if-else-if
when{
num1 in 10..20 -> print("$num1 is in 10-20" )
num2 in 10..25 -> print("$num2 is in 10-25" )
}
直接返回赋值
max = when{
num1 > num2 -> num1
else -> {
num2 // 作为返回值 必须有 else 分支
}
}
for循环
- for (item in collection) print(item)
- 代码块
for (item: Int in ints) {
...
}
带索引的遍历
for (i in array.indices) {
array[i] = ...
}
// 或者
for((index,value) in array.withIndex()){
println("index is $index , value is $value")
}
遍历map
for ((k, v) in map) {
println("$k -> $v")
}
while && do…while
和java一样
返回、跳转
- return。默认从最直接包围它的函数或者匿名函数返回。
- break。终止最直接包围它的循环。
- continue。继续下一次最直接包围它的循环。
标签限制跳转
- 任何表达式之前都可以
- @后面加标识符
break | continue | return |
---|---|---|
跳转到该标签指定循环后面的执行点 | 指定循环的下一次迭代 | 返回到标签处 |
fun foo() {
listOf(1, 2, 3, 4, 5).forEach {
if (it == 3) return@forEach
// 局部返回到该 lambda 表达式的调用者,即 forEach 循环
print(it)
}
print(" done with implicit label")
}
// output: 1245 done with implicit label
多重for循环:
outer@ for ( out in 1..5){
println("outer $out")
for (inner in 1..5){
println("inner $inner")
for (insideInner in 1..5){
if(insideInner % 2 == 0){
break@outer
}
println("insideInner $insideInner")
}
}
}
// output :
outer 1
inner 1
inner2 1
// output without @outer mark
outer 1
inner 1
insideInner 1
inner 2
insideInner 1
inner 3
insideInner 1
inner 4
insideInner 1
inner 5
insideInner 1
outer 2
...
// end
- return@a 1 :从标签@a 处返回1