继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Android 新贵 kotlin (5)

慕村9548890
关注TA
已关注
手记 1102
粉丝 227
获赞 987

webp

我们给 train 赋值为 null , 报错然后就出现了,有两个原因,在 kotlin 中默认 val 为immutable 类型,所以我们不能为 val 类型从新赋值。这个我们可以使用 var 关键字来定义变量 train 。第二个错误就是我们在 kotlin 不能将 null 赋值给变量。

webp

但是在 Java 这样做,赋值为 null 是没有问题的。我们的 kotlin 和 java 又是那么友好。是的这是有办法的。

webp

我们定义一个方法,接受java 的 JavaMoney 类型作为参数。我们可以在类后面添加一个 ?,表示该类可以为 null。

webp

如果JavaMoney 可以为 null 值,那么 money 就可能为 null。如果 money 为 null,money.amount 就用报空指针异常。我们有两种解决方案。第一种比较传统。就是判断 money 不为空时调用 money的 amount。 

webp

webp

?:表示当前是否对象可以为空,!!: 表示当前对象不为空的情况下执行。

webp


webp

在 kotlin 中也支持高阶函数,所谓高阶函数,就是函数可以作为参数,作为返回值来使用。kotlin 也支持高阶函数。在函数  findEmails 中,我们将一个函数作为参数传入 findEmails 这个函数中。然后写个 TODO 函数。这是一个有意思的,kotlin 特有的方法。

webp

上图中为 kotlin 的 TODO 的源码,返回值为 Nothing。

webp


webp

我们使用 Gson 这个库来实现对 json 文件读取以及解析。User 是一个数据类,类似 java Bean 我们这里还使用到了 Role 这个枚举类。

webp

webp

之前在学习 Java8 和 javascript 的 stream 我们对数组进行遍历,让后这里我们可以用 it 来表示每个遍历的对象,调用 sortedBy 来根据 User 对象某个属性对集合进行排序,最后调用 map 方法。

webp


webp

通过查看 to 源码,我们看到其实他就是 pair 的糖果,包装了一层。

webp

webp

webp

这里我们需要得到第一个符合条件 User 就可以了,所以调用 first()。

webp

在 javascript 的 es6 的新特性,大家可能已经都了解到了 deconstruct 解构,这里我们可以用 _(下划线) 来代替没有被使用的属性。如图我们可以将 username 和 email 替换为 _  来表示。



作者:zidea
链接:https://www.jianshu.com/p/8cef3a55fd1d


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP