为了账号安全,请及时绑定邮箱和手机立即绑定

Android 新贵 kotlin (5)

标签:
Kotlin

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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消