J'utilise Array(0, {i -> ""})
à l'heure actuelle et j'aimerais savoir s'il existe une meilleure implémentation telle que Array()
.
de plus, si j'utilise arrayOfNulls<String>(0) as Array<String>
, le compilateur m'alerte que cette distribution ne peut jamais réussir. Mais c'est l'implémentation par défaut à l'intérieur de Array(0, {i -> ""})
. Est-ce que quelque chose me manque?
À la fin (juin 2015), il existe une fonction de bibliothèque standard Kotlin
public fun <T> arrayOf(vararg t: T): Array<T>
Donc, pour créer un tableau vide de chaînes, vous pouvez écrire
val emptyStringArray = arrayOf<String>()
tableau null
var arrayString=Array<String?>(5){null}
var nullArray= arrayOfNulls<String>(5)
J'ai trouvé deux façons de créer un tableau vide, la deuxième sans lambda:
var arr = Array (0, { i -> "" })
var arr2 = array<String>()
En ce qui concerne les chaînes nulles de Kotlin, cela n'est pas autorisé. Vous devez utiliser String? type pour permettre aux chaînes d'être nulles.
De cette façon, vous pouvez générer un tableau empty (pas null
) de taille length
:
val arr = Array(length) { emptyObject }
La note est vous devez définir une emptyObject
correctement pour chaque type (car vous ne voulez pas de null
s). Par exemple. pour String
s, emptyObject
peut être ""
. Alors:
val arr = Array(3) { "" } // is equivalent of: arrayOf("","","")
Ici est un exemple en direct. Notez que le programme s'exécute avec deux exemples d'arguments, par défaut.
REMARQUE: pour créer un tableau de null
s, utilisez arrayOfNulls<Type>(length)
.
Comme mentionné ci-dessus, vous pouvez utiliser IntArray(size)
ou FloatArray(size)
.
Utilisation:
@JvmField val EMPTY_STRING_ARRAY = arrayOfNulls<String>(0)
Il retourne un tableau de chaînes de taille 0, initialisé avec des valeurs NULL.
1. Faux:
@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()
Il retourne arrayOfNulls<String>(0)
2. Faux:
@JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()
Il retourne un tableau contenant les chaînes.