美文网首页
Kotlin 笔记(四)——控制流 if 和 when

Kotlin 笔记(四)——控制流 if 和 when

作者: 珞神 | 来源:发表于2017-08-15 16:10 被阅读0次

    测试环境:

    • Kotlin 1.1.3

    一、 if 判断语句

    Kotlin 中的 if 与 java 中的稍微有些不一样,Kotlin 中的 if 除了可以作为语句之外,还可以作为表达式给变量或者方法赋值

    1. 那我们就主要说下与 java 中不一样的地方,即:作为表达式(代替三元表达式)
    • 给变量赋值
    var age = if (a > b) a else b
    
    • 给方法赋值
    fun getMax2(a: Int, b: Int) = if (a > b) a else b
    

    二、when 条件判断语句

    kotlin 中的 when 是用来代替 java 中的 switch 的,但是它比 switch 强大的太多太多了,废话不多说,看例子

    • 常规用法
      fun switch(age: Int): Int {
    
            when (age) {
           
                1-> return 10
            
                2 -> return 9
    
                3 -> return 11
            
                else -> {
                    return 20
                }
            }
    
        }
    

    switch 的分支条件必须为 数字 或者 常量、String,但是 when 的话,完全没限制,可以使用任意对象

    • 区间形式的分支
        fun switch(age: Int): Int {
            when (age) {
            //在 1 - 10 之间,包含开头和结尾
                in 1..10 -> return 10
            //在 1 - 10 之间,包含开头,不包含结尾
                in 1 until 10 -> return 9
    
                11 -> return 11
            //多个分支条件放在一起,用逗号分隔
                12, 13 -> return 13
            //不在 1 - 13 的区间内
                !in 1..13 -> return 14
            //相当于 Switch 的 default
                else -> {
                    return 20
                }
            }
    
        }
    
    • 不带参数的 when
        fun switch(age: Int): Int {
            when  {
            //在 1 - 10 之间,包含开头和结尾
                age in 1..10 -> return 10
            //在 1 - 10 之间,包含开头,不包含结尾
                age in 1 until 10 -> return 9
    
                age == 11 -> return 11
            
            //不在 1 - 13 的区间内
                age !in 1..13 -> return 14
            //相当于 Switch 的 default
                else -> {
                    return 20
                }
            }
    
        }
    
    • 类型检测
    fun hasPrefix(x: Any) = when(x) {
        is String -> x.startsWith("prefix")
        else -> false
    }
    

    等等……

    • when 还可以用来代替 if-eles if - eles ,就是因为可以使用不带参数的 when ,所有的分支条件都是简单的布尔表达式,而当一个分支的条件为真时则执行该分支:
    when {
        x.isOdd() -> print("x is odd")
        x.isEven() -> print("x is even")
        else -> print("x is funny")
    }
    

    相关文章

      网友评论

          本文标题:Kotlin 笔记(四)——控制流 if 和 when

          本文链接:https://www.haomeiwen.com/subject/vqlvrxtx.html