簡體   English   中英

在Kotlin中使用emptyArray()有什么用處

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM