Kotlin 被做为 Google 官方语言也有一年多了,但除了刚宣布那个月极度火爆之外,后面生活又回归了平静。很多小伙伴紧跟 Google 爸爸的步伐,也对 Kotlin 有了或多或少的了解,GitHub 上也有了至关一部分的 Kotlin 开源项目。java
但或许是后知后觉,依然仍是有至关一部分小伙伴,和南尘同样,只是在 Kotlin 很火的那段时间,简单了解了一下,就像当初的微信小程序同样。而后生活仍是回归平静,依然对它停留在知道的程度。git
但通过一周多的详细学习,我已经把本身 GitHub 上的开源项目 AiYaGirl 进行了深度改写,彻底使用 Kotlin 语言新开辟了一个分支。github
AiYaGirl 地址:https://github.com/nanchen2251/AiYaGirl面试
可能有很多小伙伴还不知道 AiYaGirl ,这是南尘去年在 GitHub 上开源的一款 APP,功能比较简单,主要采用 Retrofit && RxJava && MVP 模式,数据来源于代码家的 Gank.io,目前在 GitHub 上有着将近 1k 的 Stars。编程
GitHub 上一直都有挺多各具特点的完整架构 APP,它们各有各的优点,我很是地感动,你看到了这儿,这就是个人幸运。小程序
如今我新增了一个 kotlin 分支,已经彻底采用 Kotlin 改写完毕,但愿你能喜欢。微信小程序
若是你对 RxJava 不是很熟悉,我强烈推荐你能看看个人 RxJava2Examples 开源库,咱们用代码 && Blog 对 RxJava2 的方式向你展现 RxJava 2 的各类操做符和一些使用细节,但愿不会让你失望。目前超过 50 万的阅读说明了 RxJava 确实被人关注,若是你还不 RxJava2,我劝你去翻一翻文档,写一写 Demo。微信
RxJava2Examples 地址:https://github.com/nanchen2251/RxJava2Examples架构
GitHub 和公众号我都会保持维护,期待你与我进行比心的交流。ide
由于我也曾遇到各类棘手的问题,处处询问不到答案。
那时候的我,也许正如如今的你。
而我,也还在这条道路上默默前行~
好像有点偏题,但只要仍是想给你们推荐 AiYaGirl,由于我相信既有 Java 实现又有 Kotlin 实现的对比,会让你的 Kotlin 学习事半功倍。
仍是得回到正题,以前可能由于各类各样的缘由,我一直没把 Kotlin 的学习提上日程,却是奋斗在 Python 的路上。但自从面试被多次问到 Kotlin 后,我不得不跟上社会的步伐,开始 Kotlin 的学习,毕竟我是一名 Android 开发呀!
几天下来,对 Kotlin 不敢说很是了解,但确实被它的简洁性和易用性吸引到爆,不管是它极佳的函数式编程支持,仍是它无比高效地编程方式,让我时刻为之兴奋。
简单用一点代码给你展示它的灵活性吧。
好比咱们 Java 中这样一串代码:
int score = // some score; String grade; switch (score) { case 10: case 9: grade = "Excellent"; break; case 8: case 7: case 6: grade = "Good"; break; case 5: case 4: grade = "OK"; break; case 3: case 2: case 1: grade = "Fail"; break; default: grade = "Fail"; }
当你用 Kotlin 实现后,你会发现,怎么能够这么简单?
var score = // some score var grade = when (score) { 9, 10 -> "Excellent" in 6..8 -> "Good" 4, 5 -> "OK" in 1..3 -> "Fail" else -> "Fail" }
额,还有对数据类的支持,让人为之抓狂。
public class Developer { private String name; private int age; public Developer(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Developer developer = (Developer) o; if (age != developer.age) return false; return name != null ? name.equals(developer.name) : developer.name == null; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + age; return result; } @Override public String toString() { return "Developer{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
Kotlin 会怎样?
data class Developer(val name: String, val age: Int)
对,你没有看错,就一行代码。
只贴代码历来都是一件不负责任的事,因此我就举这么两个例子,若是你喜欢的话,赶忙加入咱们 Kotlin 的大军吧~
很多小伙伴在后台问我这个问题,oh...
这个真的很难说,这个世界上并非说一件事物好,就必然会获得普遍应用的。一件事物的出现,会有一群人去推广,但也会有人会去阻止,只能看谁作的更到位吧~
好啦,自从 Kotlin 出来后,事情的发展就变得极其不可控,很多推介者就蹭了好大一波流量,而南尘这么晚再出来鼓吹,应该不会被打吧?