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

时间:2017-05-28 15:11:13

标签: kotlin

我在Kotlin学习emptyArray(),但我无法在其中分配值(这是显而易见的),而且我也无法设置它的大小。 Kotlin中emptyArray有什么用?

4 个答案:

答案 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)