Kotlin中的When表达式

嘎子 Android, Kotlin 2017-05-28 779 次浏览 , 没有评论

如果之前有其他语言(如Java、C#等)的开发基础,那么在阅读和使用Kotlin时基本没有太大障碍,但有一个关键词是Kotlin中新出现的,那就是when。其实when并不是很难理解,把when当作switch的高级版本就可以了。其实想想switch的语法与用法,将switch换成when从语义上反而更好理解。

如果你觉得Kotlin仅仅是将switch换成when,那你就在错特错了,Kotlin大大增强的when的功能。之前在使用switch时不知有没有过疑问,在多分支时switch明明比if好用,但有时却不得不用if,因为switch的局限性比较大,switch只能对int类型的变量使用,现在Kotlin中的when完全没有这个问题,可以对任何类型的变量使用。

从上面一段代码可以看到,case也没有了,冒号变成了箭头,这些都是小变化。但用法是不是觉得眼前一亮,先不要着急,还有更好的呢!

在分支上,可以使用两个关键字,in、is和else,还有任何形式的表达式。先看下面一段代码:

测试这段代码得到以下输出:Kotlin is goodx is in the range。这一段代码说明了以下几个问题:

1、in的用法。

2、Kotlin虽然没有类似于break的语句,但其也只会与分支成功匹配一次,然后跳出。

3、在Kotlin中多分支匹配也很简单,只要用,分隔就可以了。

4、else替代了default。

再来看一个表达式的:

好吧,我承认,这一段代码只有演示意义,实际意义不大。下面是一个is的示例:

这段代码检测任意一个变量是不是以”prefix”开关,如果不是String类型的,直接false。

when就介绍到这里,这个关键字用多了你就不想再用if/switch了。

原创文章,转载请注明: 转载自TsonTec:测量解决方案提供者

本文链接地址: Kotlin中的When表达式

相关主题

  • 半小时入门Kotlin中的Lambda表达式2017-05-26 半小时入门Kotlin中的Lambda表达式 (0)
    在开始这个教程之前,我还是很有压力的,怎么样才能把这个问题说明白,真是挺让我头疼的。 先给大家来点基础知识吧: 一、函数式编程 有人说 也许继"面 […]
  • java中文件流读取的read方法注意问题2017-02-18 java中文件流读取的read方法注意问题 (0)
    本文说明了一个InputStreamReader类的public?int?read(char[]?cbuf, int?offset, […]
  • ZXing简明教程-从0开始2017-03-21 ZXing简明教程-从0开始 (1)
    二维码用的越来越多了,所以自己就想研究一下。 我之前也看过有关二维吗相关的东西,知道ZXing这个东西,所以一上去就找到这个类库了。但下下来却发现自己真 […]
  • Leica仪器通过蓝牙与Android手机连接2017-03-30 Leica仪器通过蓝牙与Android手机连接 (5)
    最近在捣鼓Leica仪器通过蓝牙与Android手机连接,把此事记录一下,希望对其他人有用。 一、各种连接不成功 最早自己使用的是Google官方的例子: […]
  • ZXingAndroidClientLibrary发布及使用指南2017-03-25 ZXingAndroidClientLibrary发布及使用指南 (2)
    经过几天的努力,ZXingAndroidClientLibrary终于经过测试,成功发布。Github地址:https://github.com/RileyG […]
  • 在Android Studio 3中使用Kotlin2017-05-26 在Android Studio 3中使用Kotlin (0)
    Android Studio 3中让Kotlin成为了默认语言,所以自己迫不及待的试用了一下,结果还是很让人激动的。 先分享一个Android […]

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz
回顶部