Kotlin - 条件控制(if else、when、range)

【if else】

作为表达式使用会返回一个值,因此不需要再用Java中的三元运算符了

val a = 1
val b = 2

//通常用法
if (a < b)
    max = a
else{
    max = b
    print("max赋值了b")
}

//作为表达式,取代三元运算符
max = if (a < b) a else b

//赋值给变量,需要有else,赋值的语句要放在最后一行
max = if (a < b){
    a
}else{
    print("...")
    b    //赋值放在最后一行
}

【when】

用来替代 Java中 的 switch,只要代码中包含 else if 分支都建议换成 when 表达式

//通常用法
when (max) {
    1,3,5,7,9 -> print("max是单数")
    !in 20..30 -> print("max不在20-30之间")    //可以检测一个值在或者不在一个区间或者集合中
    Integer.parseInt("100") ->{    //可以用任意表达式(而不只是常量)作为分支条件
        print("max的值是100")
    }
}

//作为表达式需要有else(相当于default),可以是代码块,要放到最后一行
val max = 2
val num = when (max){
    1 -> 1
    2 -> {
        println("...")
    }
}
print(num)    //打印2

fun num2Chinese(num:Int): String{
    return when (num){
        1 -> "壹"
        2 -> "贰"
        3 -> "叁"
        else -> "无对应文字"
    }
}

//可以用来取代 if ,else if链,如果不提供参数,当一个分支的条件为 ture 时则执行该分支
when {
    max == 1 -> print("max值为1")
    num != 2 -> peint("num值不为2")
    else -> print("都不满足")
}

【range】

( a , b ),开区间,不含首尾

[ a , b ],闭区间,包含首尾

关键字 名称 用法
.. 闭区间 val range1 = 1..10 1,2,3,4,5,6,7,8,9,10
val range2 = 10..1 区间为空什么都不返回
until 左闭右开区间 val range3 = 1 until 10 1,2,3,4,5,6,7,8,9
step 步进 val range4 = 1..10 step 2 1,3,5,7,9
down To 反向 val range5 = 10 down To 1 10,8,6,4,2
in 在区间里 val boolean1 = 5 in range1 true,5在区间里
!in 不在区间里 val boolean =  5 !in 1..10 false,5在区间里
//整型和字符Range可以使用for()迭代,小数Range只能进行in/!in操作
val intRange = 1..10
val num = 5

for (i in intRange) print("$i,")    //写法一,打印:1,2,3,4,5,6,7,8,9,10
for (i in 1..10) print("$i,")       //写法二,打印:1,2,3,4,5,6,7,8,9,10
val boolean1 = num in intRange      //true,5在区间里
val boolean2 = 5 !in 1..10          //false,5在区间里

if (num in intRange){
    print("$num 在范围里")    //打印这个
}else if (num in 10..20){
    print("$num 不在范围里")
}

val charRange = 'a'..'z'    //迭代打印:a,b,c,d,
val longRange = 1L..10L     //迭代打印:1,2,3,4,5,6,7,8,9,10
val doubleRange = 1.1..2.2
val floatRange = 1.1F..2.2F

上一篇:Mariadb MySQL、Mariadb中GROUP_CONCAT函数使用介绍


下一篇:SQL Server ->> 数据库差异备份提示3035错误,需要先对数据库执行完整备份