上篇介紹了基本的變數以及迴圈,這篇打算來介紹更進階的用法唷!
在 Kotlin
需要去嚴謹的定義一個變數,是否可以是空的。什麼時候必定要有值,何時應要為 nullable,也是在撰寫 Android
的一個需要思考的部分。
如下面的程式碼來看,這邊定義 x 可以為 nullable,表示當 x 是 null 的時候,不會使得程式 crush。
var x: String?
之前在 recyclerView
有使用過一個例子,如下
class Holder{
@Parcelize
data class Datas(val imgURL: Uri?, val text: String): Parcelable
}
可以看到 data class
裡面的 Uri
是為 nullable,原因是因為我的 view holder
會同時放入圖片以及文字,或者只有純文字。當我今天傳給 adapter 的是一個 imgURL
為 null 的資料時,表示該 item 只要顯示文字就好。
mutableListOf
val list = mutableListOf(1, 2, 3)
list += 4
在這邊可以看到,即使使用了 val
,但因為 list 本身是可以任意新增或刪除的(mutable),所以能夠在上述程式碼加入一個元素。
基本上,在現在 Kotlin
來說,他跟 ArrayList
是一樣的,在未來 Kotlin
有可能會對 mutableListOf
進行修改,更改回傳的 type,到時才可能會有差異出現
listOf
nullable
可以觀察以下的 code,都有些微差異,但是後面的意義都不同。
var mList = ArrayList<String>()
var mList = ArrayList<String?>()
var mList = ArrayList<String>()?
var mList = ArrayList<String?>()?
在 ArrayList 裡面,因為本身需要宣告一個型別,而內部裝的東西也是另外一個型別,造就了上面 4 種的搭配方法。
第一種是不可以為 mList 不可以為 null
,裡面裝的String
也不可以為 null
,最後一種則是反之。