kotlin之when表达式

这篇具有很好参考价值的文章主要介绍了kotlin之when表达式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有java基础的同学知道switch case语句

  int day =1;
      switch (day){
          case 1:
              System.out.println("星期一");
              break;
          case 2:
              System.out.println("星期二");
              break;
          case 3:
              System.out.println("星期三");
              break;
          case 4:
              System.out.println("星期四");
              break;
          case 5:
              System.out.println("星期五");
              break;
          case 6:
              System.out.println("星期六");
              break;
          case 7:
              System.out.println("放假了");
              break;
          default:
              System.out.println("没有这个日子");
      }

如果用kotlin来实现,该怎么实现类似的业务呢?

When 表达式

when 将它的参数和所有的分支条件顺序比较,直到某个分支满足条件。

   when(day){
       1-> println("今天是周一")
       2-> println("今天是周二")
       3 -> println("今天是周三")
       4 -> println("今天是周四")
       5 -> println("今天是周五")
       6 -> println("今天是是周六")
       7-> println("放假了")
      else -> println("没有这个日子")
    }

发现kotlin的when 和java的 switch....case 差不多

但是也存在不同,毕竟kotlin说是综合了很多的语言的优点而应运而生的

kotlin when返回值

java的switch是没有办法直接返回值的,只能是case...或者default给switch外面的变量赋值
   String str =null;
        int day =1;
      switch (day){
          case 1:
              str="星期一";
              break;
          case 2:
              str="星期二";
              break;
          default:
              str="放假了";
      }

而kotlin

    var day=3
    var str = when(day){
        1-> "今天是周一"
        2-> "今天是周二"
        else -> "放假了"
    }

发现kotlin的when是不是更好用

when的代码块

    var str = when(day){
        1-> {
            //.............代码块
            "今天是周一"
        }
        2-> {"今天是周二"}
        else -> {"放假了"}
    }

代码块可以有很多业务逻辑,但是最后一行值必定是返回值

when的分支条件

    var str = when(day){
        "1".toInt()-> {
            //.............代码块
            "今天是周一"
        }
        2-> {"今天是周二"}
        else -> {"放假了"}
    }

由此可见when的分支可以直接是定位值也可以是某个表达式

也可以是判断条件

    var a:Any= Object()
    var st3 = when(a){
        a is Int -> 10
        a is Boolean -> true
        a is String-> "我是字符串类型"
        else -> null
    }

 

    var st4 = when(day){
        1,2,3,4,5-> {
            //.............代码块
            "今天是周一"
        }
        6,7-> {"今天是周末"}
        else -> {"没有这个日子"}
    }

 多条件分支,这种还可以用逗号分隔

when的值区间

    var str2 = when(day){
       in 1..5-> {
            //.............代码块
            "今天是上班日"
        }
       in 6..7-> {"今天是周末"}
        else -> {"没有这个日子"}
    }

 when取代 if-else if链

    var str ="6"

  var day2=  when{
        str.equals("1") ->"星期一"
        str.equals("2") ->"星期二"
        str.equals("3") ->"星期三"
        str.equals("4") ->"星期四"
        str.equals("5") ->"星期五"
        str.equals("6") ->"星期六"
        str.equals("7") ->"星期天"
        else ->"没有这个日子"
    }
    println(day2)

配合循环使用文章来源地址https://www.toymoban.com/news/detail-611195.html

    for (day in 1..8){  //依次去看今天是星期几
        var info = when(day){
            1->"星期一"
            2->"星期二"
            3->"星期三"
            4->"星期四"
            5->"星期五"
            6->"星期六"
            7->"星期天"
            else ->"过年了"
        }
        println(info)
    }

到了这里,关于kotlin之when表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android kotlin高阶函数与Java lambda表达式介绍与实战

            目前在Java JDK版本的不断升高,新的表达式已开始出现,但是在Android混淆开发中,kotlin的语言与Java的语言是紧密贴合的。所以Java lambda表达式在kotlin中以新的身份出现:高阶函数与lambda表达式特别类似。接下来我讲会先讲Java的lambda,再介绍kotlin的高阶函数。 2.1

    2024年02月15日
    浏览(48)
  • Django笔记二十三之case、when操作条件表达式搜索、更新等操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十三之条件表达式搜索、更新等操作 这一篇笔记将介绍条件表达式,就是如何在 model 的使用中根据不同的条件筛选数据返回。 这个操作类似于数据库中 if elif else 的逻辑。 以下是本篇笔记的目录: model 和数据准备 When 和

    2023年04月13日
    浏览(65)
  • 【第一阶段】kotlin的range表达式

    range:范围:从哪里到哪里的意思 in:表示在 !in:表示不在 … :表示range表达式 代码示例: 执行结果

    2024年02月14日
    浏览(46)
  • 从零学习python - 14正则表达式的始末

    熟悉正则表达式 正则表达式的基本操作 正则表达式的分组

    2023年04月21日
    浏览(43)
  • 从零构建深度学习推理框架-7 计算图的表达式

    表达式就是一个计算过程,类似于如下: 用图形来表达就是这样的。 但是在PNNX的表达式(Experssion Layer)中不是这个样子,而是以一种抽象得方式,替换掉输入张量改为@1,@2等等 所以上面的计算图也就变成了 我们是希望把这个抽象的表达式变回到一个方便后端执行的计算过程

    2024年02月13日
    浏览(33)
  • 【从零学习python 】65. Python正则表达式修饰符及其应用详解

    修饰符 描述 re.I 使匹配对大小写不敏感 re.M 多行匹配,影响 ^ 和 $ re.S 使 . 匹配包括换行在内的所有字符 示例代码如下: 以上是关于正则表达式修饰符的介绍和示例。修饰符可以根据需要来调整正则表达式的匹配方式,从而更加灵活地处理字符串匹配问题。使用合适的修饰

    2024年02月11日
    浏览(49)
  • 【从零学习python 】63.正则表达式中的re.Match类及其属性和方法介绍

    当我们调用 re.match 方法、 re.search 方法,或者对 re.finditer 方法的结果进行迭代时,拿到的数据类型都是 re.Match 对象。 这个类里定义了相关的属性,可以直接让我们来使用。 属性和方法 说明 pos 搜索的开始位置 endpos 搜索的结束位置 string 搜索的字符串 re 当前使用的正则表达

    2024年02月11日
    浏览(56)
  • 正则表达式-速成教程

    今天遇到一枚程序媛在群里吐槽,并附了截图;然后无意中看到她的一个正则与她的注释描述不一致,就提醒了一下。顺带着给了个速成教程,在这里把这个速成教程贴出来,一是为了自己备份;二是分享给诸位需要的同行。 但需要注意的是,这只是简易教程,忽略了 ()*+

    2024年02月15日
    浏览(45)
  • elasaticsearch新版java客户端ElasticsearchClient详细教程,支持响应式编程,Lambda表达式,兼容旧版High Level Rest Client

    elasaticsearch新版java客户端详细教程,支持响应式编程,Lambda表达式。兼容旧版High Level Rest Client。网上相关教程少,我在这里出一个。elasaticsearch相关安装这里不介绍了 有几种方式,这里介绍两种,如果不考虑之前旧版High Level Rest Client的客户端采用第一种就行 阻塞和异步客户

    2023年04月15日
    浏览(36)
  • 最全的正则表达式教程

    首先给出正则最基础的知识点概述,好让同学们能回想起一些之前学过的知识点,能更好地进行阅读 这里分享一个在线练习正则的网站,同学们可以在这里进行练习 -- [ 在线练习 ] 笔记中例子中如特殊没有指出,则默认使用 /g 标志(修饰符)全局搜索作为示范 正则表达式是一组由字

    2024年01月17日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包