作家
登录

不要用Java的语法思维来写Kotlin

作者: 来源: 2018-03-12 11:57:41 阅读 我要评论

当b为可空引用时,我们可以应用if表达式处理

  1. when (x) { 
  2.     in 1..10 -> print("x is in the range"
  3.     in validNumbers -> print("x is valid"
  4.     !in 10..20 -> print("x is outside the range"
  5.     else -> print("none of the above"

但加倍优雅的方法是应用Elvis 操作符?:

  1. val l = b?.length ?: -1 

如不雅 ?: 左侧表达式非空,elvis 操作符就返回其左侧表达式,不然返回右侧表达式。

  • 留意:当且仅当左侧为空时,才会对右侧表达式求值。

4).也许可以测验测验一下let函数

let函数一般与安然调用操作符一路应用,我们起首介绍安然调用操作?.

  1. b?.length 

如不雅 b 非空,就返回 b.length,不然返回 null,这个表达式的类型是 Int?。

安然调用在链式调用中很有效。例如,如不雅一个员工Quanke可能会(或者不会)分派给一个部分, 并且可能有别的一个员工是该部分的负责人,那么获取 Quanke 地点部分负责人(如不雅有的话)的名字,我们写作:

如不雅随便率性一?属性(环节)为空,这个链式调用就会返回 null。

如不雅要只对非空值履行某个操作,安然调用操作符可以与 let 一路应用:

  1. val listWithNulls: List<String?> = listOf("A"null
  2. for (item in listWithNulls) { 
  3.      item?.let { println(it) } // 输出 A 并忽视 null 

还有一种常见的缺点(放ide琅绫擎尝尝就知道什么缺点了):

  1. private var a: String? = null 
  2. fun aLetDemo() { 
  3.     if (a != null) { 
  4.         test(a) 
  5.     } 

我们可以如许:

  1. private var a: String? = null 
  2. fun aLetDemo() { 
  3.     if (a != null) { 
  4.         test(a!!) 
  5.     } 

然则如许的后不雅就是你照样须要在test函数里处理空指针。

我们充分应用?.加let的特点,加倍优雅的解决这个编译缺点,如下

  1. private var a: String? = null 
  2. fun aLetDemo() { 
  3.     if (a != null) { 
  4.         a?.let { 
  5.             test(it) 
  6.         } 
  7.     } 

2.少写点Util类和持续

很多时刻框架供给给我的办法是比较原子,或者某些常用的办法框架并没有供给,Java一般是写一个对象类:


  推荐阅读

  热管还会打酱油?别让散热误区帮你倒忙

沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践! 在很多行业中都有很多看起来竽暌剐事理,用起往来交往不是那回事的误区,在主机中更是有不少,受愚钱是一方面,硬件和>>>详细阅读


本文标题:不要用Java的语法思维来写Kotlin

地址:http://www.17bianji.com/lsqh/40601.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)