Какая польза от emptyArray () в Котлине
училась emptyArray()
в Котлине, но я не могу назначить значения в нем (что очевидно), и ни я не могу установить его размер. Какая польза от emptyArray
в Котлин?
4 ответов
функция emptyArray () возвращает пустой массив размером 0. он не принимает никаких параметров (ни размера, ни элементов). вы можете использовать его как rvalue в операциях назначения. Вы можете использовать пустой массив для сброса всех значений в ранее существовавших массивах и установить его размер в 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)
аналогично java.util.Collections.emptyList()
методы и их аналоги для Maps
, etc., эти методы удобны при вызове метода, который принимает массив / коллекцию в качестве аргумента, но вы не хотите/должны предоставлять какие-либо элементы в этой коллекции. Можно создать экземпляр нового пустого массива / коллекции или использовать один из вспомогательных методов.
если приведенный выше вариант использования очень распространен в вашем сценарии, вы сохраняете память, используя помощники, как всегда, один и тот же экземпляр повторно используется вместо того, чтобы создавать новые экземпляры снова и снова. В противном случае это в основном "синтаксические конфеты", что делает ваш код более читаемым и понятным.
есть случаи, когда вы хотите вернуться к пустому массиву или пустому списку. Например:
return someInputArray?.filterNotNull() ?: emptyArray()
в этом случае, если у меня есть допустимый входной массив, я отфильтровываю null
значения, в противном случае, если исходный массив был null
Я возвращаю пустой массив. Поэтому массив всегда возвращается вместо null
. Пустые списки и массивы, вероятно, более распространены, чем передача нулевых списков или массивов в Котлине.
так что да, он пуст, и вы не можете добавить к это так же, как ни один массив JVM не расширяется после выделения.
массивы-это контейнеры фиксированного размера. The 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