美文网首页Android知识程序员kotlin
Android 新贵 kotlin (5)

Android 新贵 kotlin (5)

作者: zidea | 来源:发表于2018-12-18 12:46 被阅读11次

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

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

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

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

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

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

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

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

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

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

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

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

    相关文章

      网友评论

        本文标题:Android 新贵 kotlin (5)

        本文链接:https://www.haomeiwen.com/subject/hznfkqtx.html