[英]What is the use of emptyArray() in Kotlin
我在Kotlin學習emptyArray()
,但我不能在其中指定值(這是顯而易見的),我也不能設置它的大小。 在Kotlin中使用emptyArray
什么用?
類似於java.util.Collections.emptyList()
方法及其對應的Maps
等,當您調用以數組/集合作為參數的方法時,這些方法很方便,但您不希望/需要提供該集合中的任何元素。 您可以實例化一個新的空數組/集合,也可以使用其中一個輔助方法。
如果上述用例在您的方案中非常常見,那么您通過使用幫助程序來保護內存,因為始終重用相同的實例而不是一次又一次地創建新實例。 否則它主要是“語法糖果”,使您的代碼更易讀,更容易理解。
在某些情況下,您希望回退到空數組或空列表。 例如:
return someInputArray?.filterNotNull() ?: emptyArray()
在這種情況下,如果我有一個有效的輸入數組,我過濾掉null
值,否則如果源數組為null
我返回一個空數組。 因此,始終返回數組而不是null
。 空列表和數組可能比在Kotlin中傳遞可空列表或數組更常見。
所以是的,它是空的,你不能添加它,就像沒有JVM數組一旦分配就可擴展。
數組是固定大小的容器。 emptyArray()
函數創建一個0長度的數組,你真的無法做到這一點。 您無法在其中存儲任何內容,也無法調整其大小。
需要空數組的常見用例將作為屬性的默認值,該屬性將在稍后設置為不同的數組。 這可能比默認情況下在該屬性中存儲null
更好,因為在代碼使用數組時,您不必處理可能的null
值。 例如,您可以安全地迭代空數組。
舉個簡單的例子:
class NumberHolder {
var numbers: Array<Int> = emptyArray()
fun printNumbers() {
numbers.forEach { println(it) }
}
}
這個類的用法看起來像這樣:
val nh = NumberHolder()
nh.printNumbers() // prints nothing
nh.numbers = arrayOf(1, 2, 3)
nh.printNumbers() // prints 1, 2, and 3 on separate lines
emptyArray()函數返回一個大小為0的空數組。它不帶任何參數(Nor size,都不是元素)。 你可以在賦值操作中將它用作右值。 您可以使用空數組轉儲預先存在的數組中的所有值,並將其大小設置為0.注意:最好返回一個空而不是返回一個空數組,因為它不會創建任何空值異常進一步的行動
var array=arrayOf(1,2,3,4,5); array = emptyArray() //The array datais dumped and size is set to 0; array = arrayOf(0,1,2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.