2017-05-28 444 views
5

我在Kotlin學習emptyArray(),但是我不能指定它的值(這很明顯),我也不能設置它的大小。在Kotlin中使用emptyArray有什麼用?kotlin中emptyArray()的用法

+0

*,但我不能在裏面*賦值,你是如何創建陣列? –

+0

var array = emptyArray () –

+0

你如何試圖爲'array'賦值? –

回答

0

emptyArray()函數返回一個大小爲0的空數組。它不包含任何參數(不是大小,都不是元素)。您可以在賦值操作中將它用作右值。您可以使用空數組來轉儲預先存在的數組中的所有值,並將其大小設置爲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) 
4

java.util.Collections.emptyList()方法及其對應的Maps等相似,這些方法在調用以數組/集合爲參數的方法時非常方便,但您不需要/不需要提供任何元素那個集合。您可以實例化一個新的空數組/集合或使用其中一個輔助方法。

如果上述用例在您的場景中非常常見,那麼您通過使用幫助程序來保存內存,因爲始終重複使用同一個實例,而不是一次又一次創建新實例。否則,它主要是「語法糖果」,使您的代碼更易讀易懂。

0

數組是固定大小的容器。 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 
4

有要回退到一個空數組的情況下或空的清單。例如:

return someInputArray?.filterNotNull() ?: emptyArray() 

在這種情況下,如果我有一個有效的輸入陣列,我濾除null值,否則,如果源陣列是null我返回一個空數組。因此總是返回數組而不是null。空列表和數組可能比在Kotlin中傳遞可空列表或數組更常見。

所以是的,它是空的,你不能添加它,就像沒有JVM數組一旦分配就可以擴展一樣。