• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Kotlin中when表达式的使用:超强的switch(KAD 13),kotlinkad

Kotlin中when表达式的使用:超强的switch(KAD 13),kotlinkad

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了kotlin when,kotlin,kotlin教程,kotlin android,kotlin语言等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Kotlin中when表达式的使用:超强的switch(KAD 13),kotlinkad


作者:Antonio Leiva

时间:Feb 23, 2017

原文链接:https://antonioleiva.com/when-expression-kotlin/

 

 

在Java(特别是Java 6)中,switch表达式有很多的限制。除了针对短类型,它基本不能干其他事情。

 

然而,Kotlin中when表达式能够干你想用switch干的每件事,甚至更多。

 

实际上,在你的代码中,你可以用when替换复杂的if/else语句。

 

Kotlin的when表达式

 

开始,你可以像switch那样使用when。例如,想象你有一个视图,基于视图可显示性显示提示。

 

你可以做:

 

1 when(view.visibility){
2     View.VISIBLE -> toast("visible")
3     View.INVISIBLE -> toast("invisible")
4     else -> toast("gone")
5 }

 

 

在when中,else同switch的default。这是你给出的当你的表达式没有覆盖情况下的解决方案。

 

不过when还有其它额外的特性,使其性能真正强大:

 

自动转型(Auto-casting)

 

如果检查表达式左边类型(如:一个对象是特定类型的实例),就会得到右边任意类型:

 

1 when (view) {
2     is TextView -> toast(view.text)
3     is RecyclerView -> toast("Item count = ${view.adapter.itemCount}")
4     is SearchView -> toast("Current query: ${view.query}")
5     else -> toast("View type not supported")
6 }

 

 

除类型检查外,when还能用保留字in检查一个范围或列表内的实例。

 

无自变量的when

 

通过该选项,我们可以检查在when条件左边想要的任何事:

1 val res = when {
2     x in 1..10 -> "cheap"
3     s.contains("hello") -> "it's a welcome!"
4     v is ViewGroup -> "child count: ${v.getChildCount()}"
5     else -> ""
6 }

 

因when是表达式,所以它能够返回存储到变量里的值。

 

Android应用的例子

 

前面的例子非常简单,但没有任何实际使用意义。

 

 

而这个我喜欢的例子是回答onOptionsItemSelected()。

1 override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
2     R.id.home -> consume { navigateToHome() }
3     R.id.search -> consume { MenuItemCompat.expandActionView(item) }
4     R.id.settings -> consume { navigateToSettings() }
5     else -> super.onOptionsItemSelected(item)
6 }

 

该consume函数是非常简单的执行操作并返回true。而我发现它对Android框架的一些方法非常有用。这类方法需要使用结果。

 

所涉及的代码非常简单:

 

1 inline fun consume(f: () -> Unit): Boolean {
2     f()
3     return true
4 }

 

 

结论

 

 

通过when表达式,你能够非常容易地创建有几个行为路径的代码,而在这些位置上用原Java switch语句无法实现。

 

如果你要继续学习Kotlin,你可以获得免费指南学习怎样创建你的第一个项目,或获得这本书从头开始创建一个完整的APP。

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Kotlin中when表达式的使用:超强的switch(KAD 13),kotlinkad

相关文章

  • 2017-05-26Android系统的“程序异常退出”,android退出
  • 2017-05-26android studio上的基本动画实现(第一篇),androidstudio
  • 2017-05-26Android逆向之旅---解析编译之后的Resource.arsc文件格式
  • 2017-05-26ViewPager结合view无限滑动,viewpagerview滑动
  • 2017-05-26Android开发笔记(6)——类的设定与继承,android笔记
  • 2017-05-26Android消息机制Handler解析(源码+Demo)
  • 2017-05-26Android之RecyclerView(二),androidrecyclerview
  • 2017-05-26win7系统连接WiFi上网信号很弱怎么办
  • 2017-05-26Android-ViewPager的使用
  • 2017-05-26支付宝插件,支付宝

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Smack+OpenFire搭建IM通信,包含心跳和自动重连(Android实现),smackopenfire
    • 安卓--获取应用版本名称与版本号,安卓--版本版本号
    • android红米等关于读取本地文件夹图片获取路径的问题的解决,
    • ListView的CheckBox实现全部选中/不选中,listviewcheckbox
    • Android从网上下载图片
    • 14条Android Studio常用的的配置
    • dpdk内存管理——内存初始化
    • git详解,git
    • 集成websocket即时通讯 java聊天源码 代码下载 java后台框架源码 websocket源码 IM,websocket即时通讯
    • linux设备驱动程序之时钟管理(2)----又见结构

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有