Estou usando Array(0, {i -> ""})
atualmente e gostaria de saber se há uma implementação melhor, comoArray()
além disso, se eu estiver usando arrayOfNulls<String>(0) as Array<String>
, o compilador me alertará que esse elenco nunca terá sucesso. Mas é a implementação padrão interna Array(0, {i -> ""})
. Eu sinto falta de alguma coisa?
Respostas:
No final (junho de 2015), existe a função de biblioteca padrão Kotlin
public fun <T> arrayOf(vararg t: T): Array<T>
Então, para criar um array vazio de Strings, você pode escrever
val emptyStringArray = arrayOf<String>()
fonte
IntArray
? No momento estou usandoarrayOf<Int>().toIntArray()
, existe alguma maneira melhor?java.lang.ArrayIndexOutOfBoundsException:
exceção.T
vez deString
?Apenas para referência, existe também
emptyArray
. Por exemplo,var arr = emptyArray<String>()
Vejo
fonte
java.lang.ArrayIndexOutOfBoundsException:
como podemos usá-lo?0
! Portanto, é útil apenas para propósitos muito especiais que você não deseja armazenar nenhum dado (apenas deseja o tipo ). UseArray(length){""}
para incluir um desejadolength
. Veja minha resposta abaixo para detalhes.Vazio ou
null
? Essa é a questão!Para criar um array de
null
s, simplesmente usearrayOfNulls<Type>(length)
.Mas para gerar uma matriz vazia de tamanho
length
, use:val arr = Array(length) { emptyObject }
A nota é que você deve definir um
emptyObject
corretamente para cada tipo de dados (porque você não quernull
s). Por exemplo. paraString
s,emptyObject
pode ser""
. Então:val arr = Array(3) { "" } // is equivalent for: arrayOf("","","")
Aqui está um exemplo ao vivo . Observe que o programa é executado com dois argumentos de amostra, por padrão.
fonte
array nulo
var arrayString=Array<String?>(5){null} var nullArray= arrayOfNulls<String>(5)
fonte
Usar:
@JvmField val EMPTY_STRING_ARRAY = arrayOfNulls<String>(0)
Ele retorna uma matriz de tamanho 0 de Strings, inicializada com valores nulos.
1. Errado:
@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()
Retorna
arrayOfNulls<String>(0)
2. Errado:
@JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()
Ele retorna uma matriz contendo as Strings.
fonte
Conforme mencionado acima, você pode usar
IntArray(size)
ouFloatArray(size)
.fonte
Encontrei duas maneiras de criar uma matriz vazia, a segunda maneira sem lambda:
var arr = Array (0, { i -> "" }) var arr2 = array<String>()
Em relação às strings nulas de Kotlin, isso não é permitido. Você tem que usar String? digite para permitir que as strings sejam nulas.
fonte