光看这几个语法糖,就值得你试试Kotlin

最近这几天注意到Kotlin.试了一下,把现在的Java项目翻译成Kotlin,感觉很爽.算是浅尝辄止.见笑.

第一:Null Safety

这个语法糖很适合写Android程序.

比如

if (a != null){
 return a.b;
}
else{
  return null;
}

 上面这个很简单,可以直接用一个三元运算符解决.而如果是下面这种情况呢

a.b.c.d

java就要写成这种形式

if (a == null){
   return null;
}
if (a.b == null){
   return null;
}
if (a.b.c == null){
   return null;
}
return a.b.c.d

而如果用Kotlin,可以直接

a?.b?.c?.d

有没有一行更比多行强的感觉?

第二: ==和===运算

在Java中,我们要判断两个字符串是否相同.

a.equals(b) //很简单,但是如果a是空,则抛出空指针异常

中Kotlin中 

a==b 在语义上等于

a?.equals(b) ?: (b === null)

上面这句的意思

1先判断是a是不是空,如果a等于空,则返回b是否等于空引用.

2如果a不等空,则调用equals

a==b 这个和C# 中行为一致.

第三 Linq style 语法

想像一下,如果你想在Java 7 中实现这样一个功能. 查找列中电话或人名以XX开头,且电话和人名不为空的记录,将符合条件的记录以列表的形式返回.

这个功能在Java7中估计要写很多行吧.Java8中可能要简单一此.而在Kotlin中

var nlist = mData.filter { c-> c.phoneShort?.startsWith(query)?:false
                        || c.phone?.startsWith(query)?:false
                        || c.name?.startsWith(query)?:false
                }.toList()

// mData 是一个ArrayList

是不是很方便?

而filter这个方法是一个扩展方法.也就是Filter这个方法不是由ArrayList类实现的,而是由第三方类库实现,然后被扩展上去的.

这个扩展方法很早以前在C#中就有.

结尾

写了这么多,有点睹Kotlin思C#的感觉.果然情人还是老的好

转载于:https://my.oschina.net/wynwyy/blog/909241

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值