Kotlin基础之 When表达式

Kotlin中的When表达式就是java中的switch  case语句

我们在java中这样写switch case语句

  int day =1;
        switch (day){
            case 1:
                Log.d(TAG, "test: 周一吃包子");
                break;
            case 2:
                Log.d(TAG, "test: 周二吃肉夹馍");
                break;
            case 3:
                Log.d(TAG, "test: 周三吃鸡蛋灌饼");
                break;
            case 4:
            case 5:
                Log.d(TAG, "test:这两天吃油条");
                break;
            default:
                Log.d(TAG, "test: 看心情随便吃");
                break;
        }

而在Kotlin中,我们使用When表达式代替

 var a=10
  when(a){
      1-> Log.d(TAG, "test: 周一吃包子")
      2-> Log.d(TAG, "test: 周二吃肉夹馍")
      3-> Log.d(TAG, "test: 周三吃鸡蛋灌饼")
      4,5-> Log.d(TAG, "test: 这两天吃油条")
      else -> Log.d(TAG, "test: 看心情随便吃")
  }

When表达式也是有返回值的

   var a=10
     var b = when(a){
          1-> "奔波儿霸"
          2-> "霸波儿奔"
          4,5-> "奔波儿霸和霸波儿奔"
          else ->""
      }

When表达式的每个分支也可以跟代码块,该代码块的最后一个表达式就是该表达式的值

 var a=10
     var b = when(a){
          1-> {
              //此处省略一千行代码
              "奔波儿霸"}

         2-> "霸波儿奔"
         else ->{
            //  此处省略一千行代码
             "奔波儿霸和霸波儿奔"
         }
      }

可以看到,在When表达式中,代码块和表达式可以混合使用

When表达式的分支条件也可以是一个表达式

  var a=10
     var b = when(a){
          "10".toInt()-> "奔波儿霸"
         2-> "霸波儿奔"
         else ->"奔波儿霸和霸波儿奔"
      }

When表达式的分支条件还可以检查一个值在/不在一个区间中

  var a=10
     var b = when(a){
         //在1-10区间
         in 1..10-> "奔波儿霸"
         //不在30 - 50 区间
         !in 30..50-> "霸波儿奔"
         else ->"奔波儿霸和霸波儿奔"
      }

When表达式的分支条件还可以用作判断

  var a:Any= Object()
     var b = when(a){
         //是String类型
        a is String-> "奔波儿霸"
         //是 Int类型
         a is Int -> 10
         //是Boolean类型
         a is Boolean -> true
         //否则
          else -> null
      }

各种类型的表达式还可以混合使用

 var a:Any= Object()
     var b = when(a){
         //判断
        a is String-> "奔波儿霸"
         //区间
          in 0..10-> 10
         //普通表达式
         "10".toInt() -> true
         //否则
          else -> null
      }

不管你激动不激动,反正我很激动

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值