Kotlin 控制流篇

Kotlin 控制流篇

前言

正文

控制流(IF、when、for、while)

1. IF 表达式
// 传统用法
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 = 0
while (index < items.size) {
    println("item at $index is ${items[index]}")
    index++
}
3. when 表达式
//when 取代 switch
// 类似 Java 的switch case
switch(x){
    case 1: 
        System.out.println("1");
        break;
    default: break;
}

when (x) {
    1 -> println("1")
    else -> { // 注意这个块
        print("x is neither 1 nor 2")
    }
}



//[1] 类似 java 的 switch case ,但是会自动补上 break
when(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 100
for (i in range2){
    print("$i _")
}

//[2] step 设置步长
val range2:IntRange = 0 until 100
for (i in range2 step 2){
    print("$i _")
}

//[3] downTo 递减区间
for(i in 4 downTo 1){}
5. 使用区间 range
//[1] in 运算符检测数字是否在区间
val x = 10
val y = 9
if (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")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值