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