// 传统用法
var max = a
if(a < b) max = b
// With else
var max: Int
if(a > b){
max = a
}else{
max = b
}// 作为表达式
val max =if(a > b) a else b
//简化方法
fun maxOf(a: Int, b: Int)=if(a > b) a else b
2. while 表达式
val items =listOf("apple","banana","kiwifruit")
var index =0while(index < items.size){println("item at $index is ${items[index]}")
index++}
3. when 表达式
//when 取代 switch// 类似 Java 的switch caseswitch(x){case1:
System.out.println("1");break;default:break;}
when (x){1->println("1")else->{// 注意这个块print("x is neither 1 nor 2")}}//[1] 类似 java 的 switch case ,但是会自动补上 breakwhen(x){1->{}2->{}// [3] 多个条件,同份逻辑3,4->{}// [4] in 监测是否在区间内
in 10..20->{}// [5] not in!in 21..25->{}// [6] 使用 is 进行特定类型监测
is String ->{}else->{}}//[2] when 可以有返回值
val value:Int =when(x){1->{ x+1}2->{ x+2}else->{ x+5}}
4. kotlin for 语句,step 步长、downTo 递减
//[1] for 遍历
val range2:IntRange =0 until 100for(i in range2){print("$i _")}//[2] step 设置步长
val range2:IntRange =0 until 100for(i in range2 step 2){print("$i _")}//[3] downTo 递减区间for(i in 4 downTo 1){}
5. 使用区间 range
//[1] in 运算符检测数字是否在区间
val x =10
val y =9if(x in 1..y+1){println("fits in range")}//[2] !in 检测不在if(-1!in 0..list.lastIndex){println("-1 is out of range")}//[3] step 跳步迭代for(x in 1..10 step 2){print(x)}println()//[4] downTo 降区间for(x in 9 downTo 0 step 3){print(x)}
返回和跳转
1. return 配合 ?:
//[1] 不存在则返回
val s = person.name ?:return
2. kotlin 的标签
//[2] 表达式可添加标签,如 loop@ 、abc@
loop@ for(i in 1..100){// ……}//[3] 标签限制 break 、continue
loop@ for(i in 1..100){for(j in 1..100){if(……)break@loop}}//[4] 输出 1245
fun foo(){listOf(1,2,3,4,5).forEach {if(it ==3)return@forEach// 局部返回到该 lambda 表达式的调用者,即 forEach 循环print(it)}print(" done with implicit label")}