web-dev-qa-db-fra.com

Comment puis-je créer un tableau d'objets dans Kotlin sans initialisation et un nombre spécifique d'éléments?

Je veux créer un tableau d'objets avec un nombre spécifique d'éléments dans Kotlin, le problème est que je n'ai pas maintenant les valeurs actuelles pour l'initialisation de chaque objet dans la déclaration, j'ai essayé:

var miArreglo = Array<Medico>(20, {null})

à Java, je l'ai et c'est exactement ce que je veux, mais j'en ai besoin à Kotlin. :

Medico[] medicos = new Medico[20];

for(int i = 0 ; i < medicos.length; i++){
    medicos[i] = new Medico();

}

Quel serait l'équivalent Kotlink du code Java Java ci-dessus)?

Aussi, j'ai essayé avec:

var misDoctores = arrayOfNulls<medic>(20)

for(i in misDoctores ){
    i = medic()
}

Mais je Android Studio montre-moi le message: "Val ne peut pas être réaffecté"

13
Eduardo Corona

L'équivalent Kotlin de cela pourrait être ceci:

val miArreglo = Array(20) { Medico() }

Mais je vous conseille fortement d'utiliser Lists dans Kotlin car ils sont beaucoup plus flexibles. Dans votre cas, le List n'aurait pas besoin d'être mutable et je conseillerais donc quelque chose comme ceci:

val miArreglo = List(20) { Medico() }

Les deux extraits ci-dessus peuvent être facilement expliqués. Le premier paramètre est évidemment la taille Array ou List comme dans Java et la seconde est une fonction lambda, qui est la fonction init { ... }. La fonction init { ... } peut consister en une sorte d'opération et la dernière valeur sera toujours le type de retour et la valeur retournée, ie dans ce cas, un objet Medico.

J'ai également choisi d'utiliser un val au lieu d'un var parce que les List et les Array ne devraient pas être réaffectés. Si vous souhaitez modifier votre List, veuillez utiliser un MutableList à la place.

val miArreglo = MutableList(20) { Medico() }

Vous pouvez alors modifier cette liste, par exemple:

miArreglo.add(Medico())