Kotlin 被作為 Google 官方語言也有一年多了意蛀,但除了剛宣布那個(gè)月極度火爆以外秀姐,后面生活又回歸了平靜若贮。不少小伙伴緊跟 Google 爸爸的步伐,也對(duì) Kotlin 有了或多或少的了解兜看,GitHub 上也有了相當(dāng)一部分的 Kotlin 開源項(xiàng)目。
但或許是后知后覺搏予,依然還是有相當(dāng)一部分小伙伴,和南塵一樣雪侥,只是在 Kotlin 很火的那段時(shí)間,簡單了解了一下速缨,就像當(dāng)初的微信小程序一樣。然后生活還是回歸平靜代乃,依然對(duì)它停留在知道的程度旬牲。
先推薦一下最近在 GitHub 上更新的項(xiàng)目
但經(jīng)過一周多的詳細(xì)學(xué)習(xí)搁吓,我已經(jīng)把自己 GitHub 上的開源項(xiàng)目 AiYaGirl 進(jìn)行了深度改寫,完全使用 Kotlin 語言新開辟了一個(gè)分支擂橘。
AiYaGirl 地址:https://github.com/nanchen2251/AiYaGirl
可能有不少小伙伴還不知道 AiYaGirl ,這是南塵去年在 GitHub 上開源的一款 APP昌罩,功能比較簡單灾馒,主要采用 Retrofit && RxJava && MVP 模式,數(shù)據(jù)來源于代碼家的 Gank.io绘搞,目前在 GitHub 上有著將近 1k 的 Stars彤避。
GitHub 上一直都有挺多各具特色的完整架構(gòu) APP,它們各有各的優(yōu)勢夯辖,我非常地感動(dòng)琉预,你看到了這兒,這就是我的幸運(yùn)蒿褂。
現(xiàn)在我新增了一個(gè) kotlin 分支圆米,已經(jīng)完全采用 Kotlin 改寫完畢,希望你能喜歡啄栓。
如果你對(duì) RxJava 不是很熟悉娄帖,我強(qiáng)烈推薦你能看看我的 RxJava2Examples 開源庫,我們用代碼 && Blog 對(duì) RxJava2 的方式向你展示 RxJava 2 的各種操作符和一些使用細(xì)節(jié)昙楚,希望不會(huì)讓你失望近速。目前超過 50 萬的閱讀說明了 RxJava 確實(shí)被人關(guān)注,如果你還不 RxJava2堪旧,我勸你去翻一翻文檔削葱,寫一寫 Demo。
RxJava2Examples 地址:https://github.com/nanchen2251/RxJava2Examples
GitHub 和公眾號(hào)我都會(huì)保持維護(hù)淳梦,期待你與我進(jìn)行比心的交流析砸。
因?yàn)槲乙苍龅礁鞣N棘手的問題,到處詢問不到答案爆袍。
那時(shí)候的我首繁,也許正如現(xiàn)在的你。
而我陨囊,也還在這條道路上默默前行~
好像有點(diǎn)偏題弦疮,但只要還是想給大家推薦 AiYaGirl,因?yàn)槲蚁嘈偶扔?Java 實(shí)現(xiàn)又有 Kotlin 實(shí)現(xiàn)的對(duì)比谆扎,會(huì)讓你的 Kotlin 學(xué)習(xí)事半功倍挂捅。
為什么要鼓吹 Kotlin
還是得回到正題芹助,之前可能因?yàn)楦鞣N各樣的原因堂湖,我一直沒把 Kotlin 的學(xué)習(xí)提上日程,倒是奮斗在 Python 的路上状土。但自從面試被屢次問到 Kotlin 后无蜂,我不得不跟上社會(huì)的步伐,開始 Kotlin 的學(xué)習(xí)蒙谓,畢竟我是一名 Android 開發(fā)呀斥季!
幾天下來,對(duì) Kotlin 不敢說非常了解,但確實(shí)被它的簡潔性和易用性吸引到爆酣倾,無論是它極佳的函數(shù)式編程支持舵揭,還是它無比高效地編程方式,讓我時(shí)刻為之興奮躁锡。
簡單用一點(diǎn)代碼給你展現(xiàn)它的靈活性吧午绳。
比如我們 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";
}
當(dāng)你用 Kotlin 實(shí)現(xiàn)后,你會(huì)發(fā)現(xiàn)映之,怎么可以這么簡單拦焚?
var score = // some score
var grade = when (score) {
9, 10 -> "Excellent"
in 6..8 -> "Good"
4, 5 -> "OK"
in 1..3 -> "Fail"
else -> "Fail"
}
額,還有對(duì)數(shù)據(jù)類的支持杠输,讓人為之抓狂赎败。
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 會(huì)怎樣?
data class Developer(val name: String, val age: Int)
對(duì)蠢甲,你沒有看錯(cuò)僵刮,就一行代碼。
只貼代碼從來都是一件不負(fù)責(zé)任的事鹦牛,所以我就舉這么兩個(gè)例子妓笙,如果你喜歡的話,趕緊加入我們 Kotlin 的大軍吧~
Kotlin 是否會(huì)取代 Java
不少小伙伴在后臺(tái)問我這個(gè)問題能岩,oh...
這個(gè)真的很難說寞宫,這個(gè)世界上并不是說一件事物好,就必然會(huì)得到廣泛應(yīng)用的拉鹃。一件事物的出現(xiàn)辈赋,會(huì)有一群人去推廣,但也會(huì)有人會(huì)去阻止膏燕,只能看誰做的更到位吧~
額外的話
好啦钥屈,自從 Kotlin 出來后,事情的發(fā)展就變得極其不可控坝辫,不少推介者就蹭了好大一波流量篷就,而南塵這么晚再出來鼓吹,應(yīng)該不會(huì)被打吧近忙?