Estoy usando Array(0, {i -> ""})actualmente y me gustaría saber si hay una mejor implementación comoArray()
además, si estoy usando arrayOfNulls<String>(0) as Array<String>, el compilador me alertará de que esta transmisión nunca podrá tener éxito. Pero es la implementación predeterminada en el interior Array(0, {i -> ""}). ¿Me pierdo algo?

Respuestas:
Últimamente (junio de 2015) existe la función de biblioteca estándar de Kotlin
public fun <T> arrayOf(vararg t: T): Array<T>Entonces, para crear una matriz vacía de cadenas, puede escribir
val emptyStringArray = arrayOf<String>()fuente
IntArray? Ahora mismo estoy usandoarrayOf<Int>().toIntArray(), ¿hay alguna manera mejor?java.lang.ArrayIndexOutOfBoundsException:excepción.Tlugar deString?Solo como referencia, también lo hay
emptyArray. Por ejemplo,var arr = emptyArray<String>()Ver
fuente
java.lang.ArrayIndexOutOfBoundsException:¿cómo podemos usarlo?0! Por lo tanto, es útil solo para fines muy especiales en los que no desea almacenar ningún dato (solo desea escribir ). UseArray(length){""}para incluir un deseadolength. Vea mi respuesta a continuación para obtener más detalles.Vacío o
null? ¡Esa es la pregunta!Para crear una matriz de
nulls, simplemente usearrayOfNulls<Type>(length).Pero para generar una matriz vacía de tamaño
length, use:val arr = Array(length) { emptyObject }La nota es que se debe definir una
emptyObjectadecuada para cada tipo de datos (pd no deseanulls). P.ej. paraStrings,emptyObjectpuede ser"". Entonces:val arr = Array(3) { "" } // is equivalent for: arrayOf("","","")He aquí un ejemplo en vivo . Tenga en cuenta que el programa se ejecuta con dos argumentos de muestra, de forma predeterminada.
fuente
matriz nula
var arrayString=Array<String?>(5){null} var nullArray= arrayOfNulls<String>(5)fuente
Utilizar:
@JvmField val EMPTY_STRING_ARRAY = arrayOfNulls<String>(0)Devuelve una matriz de cadenas de tamaño 0, inicializada con valores nulos.
1. Incorrecto:
@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()Vuelve
arrayOfNulls<String>(0)2. Incorrecto:
@JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()Devuelve una matriz que contiene las cadenas.
fuente
Como se mencionó anteriormente, puede usar
IntArray(size)oFloatArray(size).fuente
Encontré dos formas de crear una matriz vacía, la segunda forma sin una lambda:
var arr = Array (0, { i -> "" }) var arr2 = array<String>()Con respecto a las cadenas nulas de Kotlin, esto no está permitido. ¿Tienes que usar String? type para permitir que las cadenas sean nulas.
fuente