我在Kotlin学习emptyArray()
,但我无法在其中分配值(这是显而易见的),而且我也无法设置它的大小。 Kotlin中emptyArray
有什么用?
答案 0 :(得分:4)
与java.util.Collections.emptyList()
方法及其Maps
等对应方法类似,当您调用以数组/集合作为参数的方法时,这些方法很方便,但您不想要/需要提供该集合中的任何元素。您可以实例化一个新的空数组/集合,也可以使用其中一个辅助方法。
如果上述用例在您的方案中非常常见,那么您通过使用帮助程序来保护内存,因为重用相同的实例,而不是一次又一次地创建新实例。否则它主要是“语法糖果”,使您的代码更易读,更容易理解。
答案 1 :(得分:4)
在某些情况下,您希望回退到空数组或空列表。例如:
return someInputArray?.filterNotNull() ?: emptyArray()
在这种情况下,如果我有一个有效的输入数组,我会过滤掉null
个值,否则如果源数组是null
,我会返回一个空数组。因此,始终返回数组而不是null
。空列表和数组可能比在Kotlin中传递可空列表或数组更常见。
所以是的,它是空的,你不能添加它,就像没有JVM数组在分配后可扩展一样。
答案 2 :(得分: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
答案 3 :(得分:0)
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)