本以為下班回到家,老姐就會跑去打遊戲,沒想到居然是認真替昨天的問題除錯。
問她不是要休息嗎,她一派輕鬆的表示,強制和自發性的差異是很大的,她今天只會把那個問題弄掉,等程式順利跑起來就可以專心玩薩爾達了。
//val topicList: MutableLiveData<List<Topic>> = MutableLiveData() 錯誤,因為 List 缺少 set function
val topicList: MutableLiveData<ArrayList<Topic>> = MutableLiveData()
在她改程式的時候,我問她這幾天對 Kotlin 有什麼看法。
「嗯⋯⋯一開始不太習慣 程式碼收尾不用打分號
這件事,然後我覺得那個語言開發者可能喜歡大富翁,用機會 問號表示不可信的 Null
,用命運 驚嘆號表示可能不可信但還是要強力推進
。 類別繼承變得更嚴謹
。 雙等號取代 equals
,比對物件位址用三個等號
。 getter
setter
property 這兩個方法變成預設,可以直接拿來用不像以前要自己寫 getXXX()
setXXX()
,初始一個物件不用 new 開頭,感覺習慣之後可以省下不少打字時間。說到省時間,你看,」她馬上示範了一次複製貼上。
「就算是從其他專案複製來的 Java 程式碼, IDE 都能幫忙轉換。」
老姐嘆了口氣。「要說到現在都比較難習慣的就是 lambda 系列了,比如 apply
let
run
with
also
, Higher-Order Functions
也還在摸索。」
「嗯,這幾個我也還不熟,我比較常用到的是 apply
let
。儘管不少好心人在部落格上分享他們的筆記和口訣,但是真的要融會貫通還是要多寫了。」現階段只能每次寫之前再讀一次相關的官網文件了。
https://kotlinlang.org/docs/reference/lambdas.html#higher-order-functions
大概是官方也知道大家背不起來,提供了表格指引。
https://kotlinlang.org/docs/reference/scope-functions.html#apply
但是英文不是母語,每次都要在腦裡過一遍不方便,所以我和老姐分享了自己改寫的版本:
方法名 | 使用方式 | 本體在方法區塊裡的叫法 | 方法回傳值 |
---|---|---|---|
let | 本體.let {} | it | 最後一行 |
run | 本體.run {} | this | 最後一行 |
run | run {} | 沒有本體 | 最後一行 |
with | with(本體) {} | this | 最後一行 |
apply | 本體.apply {} | this | 本體 |
also | 本體.also {} | it | 本體 |
老姐相當開心,把這個表格印出來貼在筆電外殼。
反正是家裡的筆電,上面一堆貼紙是正常的,我這邊還貼有 GDG Taipei
貼紙和柴犬貼紙。
唔,也差不多該離開電腦了,健身環我來囉。
本次鐵人賽的作品在放進更多內容後已經成書,書名是《老姐要用Kotlin寫專案:從 Server 到 Android APP 的開發生存日記》,歡迎購買唷。https://www.tenlong.com.tw/products/9789864348978