继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Kotlin条件控制-When

慕神8447489
关注TA
已关注
手记 1310
粉丝 174
获赞 957

谨以此记录自己的学习过程中感触较深的知识点!

When

when 会将它的参数和每个条件比较,直到找到一个合适的分支,否则会走默认分支(else)
when既可以被(1)、当做表达式使用;如果被当做表达式,符合条件的分支值就是这个表达式的值;(2)、也可以被当做语句使用。

(1)、当做表达式使用 [另:C、检测一个值是(is)或者不是(!is)一个特定类型的值]

fun test() {
        fun hasPrefix(x:Any) = when(x) {
            is String -> x.startsWith("prefix")            else -> false
        }

        val x1 = hasPrefix(5)        print(x1)                          ///false

        val x2 = hasPrefix("3")        print(x2)                          ///false

        val x3 = hasPrefix("prefix123")        print(x3)                          ///true


        val x = 1
        val s = "asas"
        val res = when {
            x in 1..10 -> "cheap"
            s.contains("hello") -> "it's a welcome!"
            else -> ""
        }        print(res)    //cheap
}

(2)、语句使用

A:类似于Switch使用
        val x4 = 1;        var x5 = 1;
        when(x4) {            1 -> x5 = 2
            2 -> x5 = 2
            else -> {
                x5 = 5
            }
        }        print(x5)  // 2另一种写法:
        val x4 = 1;        var x5 = 1;
        when(x4) {            1,2 -> x5 = 2
            else -> {
                x5 = 5
            }
        }        print(x5)  // 2B:检测一个值在(in)或者不在(!in)一个区间或者集合中

        val x4 = 1;        var x5 = 1;
        when(x4) {
            !in 3..4 -> x5 = 3
            in 1..2 -> x5 = 2
            else -> {
                x5 = 5
            }
        }        print(x5) //3C:检测一个值是(is)或者不是(!is)一个特定类型的值

D:when 也可以用来取代 if-else if链。 如果不提供参数,所有的分支条件都是简单的布尔表达式,
而当一个分支的条件为真时则执行该分支:

        fun isString(x:Any) = when(x) {
            x is String -> true
            else -> false
        }

        fun isInt(x:Any) = when(x) {
            x is Int -> true
            else -> false
        }

        when {
            isString("string") -> print("x is String")
            isInt("4") -> print("x is Int")            else -> print("x is not String not Int")
        }      // x is String



作者:kevinLY
链接:https://www.jianshu.com/p/5c69156ada11


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP