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.T
lugar 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
null
s, 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
emptyObject
adecuada para cada tipo de datos (pd no deseanull
s). P.ej. paraString
s,emptyObject
puede 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