Android 新貴 kotlin (5)

我們給 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 替換爲 _  來表示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章