В Array(0, {i -> ""})
настоящее время я использую , и я хотел бы знать, есть ли лучшая реализация, такая какArray()
плюс, если я использую arrayOfNulls<String>(0) as Array<String>
, компилятор предупредит меня, что это приведение не может быть успешным. Но внутри это реализация по умолчанию Array(0, {i -> ""})
. Я что-то упускаю?
Ответы:
В конце (июнь 2015 г.) существует стандартная библиотечная функция Kotlin.
public fun <T> arrayOf(vararg t: T): Array<T>
Итак, чтобы создать пустой массив строк, вы можете написать
val emptyStringArray = arrayOf<String>()
источник
IntArray
? Прямо сейчас используюarrayOf<Int>().toIntArray()
, есть ли способ лучше?java.lang.ArrayIndexOutOfBoundsException:
исключение.T
вместоString
?Для справки тоже есть
emptyArray
. Например,var arr = emptyArray<String>()
Увидеть
источник
java.lang.ArrayIndexOutOfBoundsException:
как мы можем его использовать?0
! Так что это полезно только для очень специальных целей, когда вы не хотите хранить какие-либо данные (просто хотите тип ). ИспользуйтеArray(length){""}
для включения желаемогоlength
. Подробности см. В моем ответе ниже.Пустой или
null
? Вот в чем вопрос!Чтобы создать массив
null
s, просто используйтеarrayOfNulls<Type>(length)
.Но чтобы сгенерировать пустой массив размером
length
, используйте:val arr = Array(length) { emptyObject }
Обратите внимание, что вы должны
emptyObject
правильно определить для каждого типа данных (потому что вы не хотитеnull
s). E. g. дляString
s,emptyObject
может быть""
. Так:val arr = Array(3) { "" } // is equivalent for: arrayOf("","","")
Вот это живой пример . Обратите внимание, что по умолчанию программа запускается с двумя примерами аргументов.
источник
нулевой массив
var arrayString=Array<String?>(5){null} var nullArray= arrayOfNulls<String>(5)
источник
Использование:
@JvmField val EMPTY_STRING_ARRAY = arrayOfNulls<String>(0)
Он возвращает массив строк размера 0, инициализированный нулевыми значениями.
1. Неправильно:
@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()
Он возвращается
arrayOfNulls<String>(0)
2. Неправильно:
@JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()
Он возвращает массив, содержащий строки.
источник
Как упоминалось выше, вы можете использовать
IntArray(size)
илиFloatArray(size)
.источник
Я нашел два способа создать пустой массив, второй способ без лямбды:
var arr = Array (0, { i -> "" }) var arr2 = array<String>()
Что касается нулевых строк Kotlin, это запрещено. Вам нужно использовать String? type, чтобы строки могли быть нулевыми.
источник