iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
0
Mobile Development

老姐好像要用 Kotlin 寫專案,能撐30天嗎?系列 第 5

語法研究的第五天:Kotlin apply let run with also

本以為下班回到家,老姐就會跑去打遊戲,沒想到居然是認真替昨天的問題除錯。

問她不是要休息嗎,她一派輕鬆的表示,強制和自發性的差異是很大的,她今天只會把那個問題弄掉,等程式順利跑起來就可以專心玩薩爾達了。

https://ithelp.ithome.com.tw/upload/images/20200914/20129197KEKm3JWB2T.png

https://ithelp.ithome.com.tw/upload/images/20200914/20129197ZqLH24I3r4.png

//val topicList: MutableLiveData<List<Topic>> = MutableLiveData() 錯誤,因為 List 缺少 set function
val topicList: MutableLiveData<ArrayList<Topic>> = MutableLiveData()

在她改程式的時候,我問她這幾天對 Kotlin 有什麼看法。

「嗯⋯⋯一開始不太習慣 程式碼收尾不用打分號 這件事,然後我覺得那個語言開發者可能喜歡大富翁,用機會 問號表示不可信的 Null ,用命運 驚嘆號表示可能不可信但還是要強力推進類別繼承變得更嚴謹雙等號取代 equals比對物件位址用三個等號getter setter property 這兩個方法變成預設,可以直接拿來用不像以前要自己寫 getXXX() setXXX() ,初始一個物件不用 new 開頭,感覺習慣之後可以省下不少打字時間。說到省時間,你看,」她馬上示範了一次複製貼上。

https://ithelp.ithome.com.tw/upload/images/20200914/20129197FUxSygCYUm.png

「就算是從其他專案複製來的 Java 程式碼, IDE 都能幫忙轉換。」

老姐嘆了口氣。「要說到現在都比較難習慣的就是 lambda 系列了,比如 apply let run with alsoHigher-Order Functions 也還在摸索。」

「嗯,這幾個我也還不熟,我比較常用到的是 apply let 。儘管不少好心人在部落格上分享他們的筆記和口訣,但是真的要融會貫通還是要多寫了。」現階段只能每次寫之前再讀一次相關的官網文件了。

https://kotlinlang.org/docs/reference/lambdas.html#higher-order-functions

大概是官方也知道大家背不起來,提供了表格指引。

https://kotlinlang.org/docs/reference/scope-functions.html#apply

https://ithelp.ithome.com.tw/upload/images/20200914/20129197SqjtlTEtaW.png

但是英文不是母語,每次都要在腦裡過一遍不方便,所以我和老姐分享了自己改寫的版本:

方法名 使用方式 本體在方法區塊裡的叫法 方法回傳值
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


上一篇
調整時程的第四天:dataBinding 小麻煩
下一篇
眺望統一的第六天:App 設計和 Kotlin range 亂數
系列文
老姐好像要用 Kotlin 寫專案,能撐30天嗎?30

尚未有邦友留言

立即登入留言