为了账号安全,请及时绑定邮箱和手机立即绑定

Kotlin条件控制-When

标签:
Html/CSS

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

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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消