Intereting Posts
Файлы Kotlin не могут использовать R.java Bulid JAXB классы в Gradle usin Kotlin Kotlin – lateinit VS Any? = null Что означает смысл в котлине? Расширение файла загрузки. Тесты инструментария не удалось из-за NoClassDefFoundError Как я могу заставить конечную точку остального читать файл cookie и использовать это значение в okhttp Interceptor? Кинжал 2 Именован не может быть предоставлен без метода @Provides Внедрить только один метод из интерфейса в анонимном классе Возможно ли вставить адаптер Recycler View с помощью кинжала 2.11 Как пропустить модели proguard, используемые retrofit2, которые находятся на базовом пакете? Как я могу переопределить java-метод и изменить значение nullability параметра? Как слить два набора перечислений в kotlin с одним и тем же родительским интерфейсом? Пользовательский вертикальный просмотрщик не работает с прослушивателем onClick в дочернем представлении в kotlin, как передать обратно MutableList, где пункт назначения ожидает Список

Каково использование emptyArray () в Котлине

Я изучал emptyArray() в Kotlin, но я не могу назначать в нем значения (что очевидно), и я не могу установить его размер. Каково использование emptyArray в Котлине?

Функция emptyArray () возвращает пустой массив размером 0. Он не принимает никаких параметров (Nor size, ни элементов). вы можете использовать его как 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 и т. Д., Эти методы удобны, когда вы вызываете метод, который принимает массив / коллекцию в качестве аргумента, но вы не хотите / предоставить любые элементы в этой коллекции. Вы можете либо создать новый пустой массив / коллекцию, либо использовать один из вспомогательных методов.

Если вышеупомянутый вариант использования очень распространен в вашем сценарии, вы храните память с помощью помощников, как всегда один и тот же экземпляр используется повторно, а не для создания новых экземпляров снова и снова. В противном случае это в основном «синтаксическая конфета», что делает ваш код более понятным и понятным.

Бывают случаи, когда вы хотите отступить к пустым массивам или пустым спискам. Например:

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

В этом случае, если у меня есть допустимый входной массив, я отфильтровываю null значения, иначе, если исходный массив был null я возвращаю пустой массив. Поэтому массив всегда возвращается вместо null . Пустые списки и массивы, вероятно, более распространены, чем передача обнуляемых списков или массивов в Котлин.

Так что да, он пуст, и вы не можете добавить к нему, так же как массив JVM расширяется после выделения.

Массивы представляют собой контейнеры с фиксированным размером. Функция emptyArray() создает массив длиной 0, и вы действительно не можете с этим emptyArray() . Вы ничего не можете хранить в нем, и вы не можете изменить его размер.

Общим вариантом использования, когда вам нужен пустой массив, будет значение по умолчанию для свойства, которое будет установлено на другой массив в более поздней точке. Это может быть лучше, чем хранить значение 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