Swift: un piège pour définir plusieurs éléments initiaux dans un tableau

Il existe plusieurs façons de définir plusieurs éléments initiaux dans un tableau.

class Hoge {
    var num: Int
    init(num: Int) {
        self.num = num
    }
}

//Méthode 1
var array1: [Hoge] = [
    Hoge(num: 0),
    Hoge(num: 0),
    Hoge(num: 0)
]

//Méthode 2
var array2 = [Hoge]()
for _ in (0 ..< 3) {
    array2.append(Hoge(num: 0))
}

//Méthode 3
var array3: [Hoge] = (0 ..< 3).map({ _ -> Hoge in
    return Hoge(num: 0)
})

//Méthode 4
var array4 = [Hoge](repeating:Hoge(num:0),count:3)

//Il peut y en avoir d'autres

En se concentrant sur la méthode 4 ici, il semble qu'elle puisse être correctement initialisée en passant l'élément initial à la répétition et le nombre d'éléments à compter, mais il existe des différences par rapport aux trois autres méthodes.

//Comparez les éléments avec la méthode 1
print(array1[0] === array1[1]) // -> false
print(array1[1] === array1[2]) // -> false
//Le résultat est la méthode 2,Idem pour 3

//Comparez les éléments avec la méthode 4
print(array4[0] === array4[1]) // -> true
print(array4[1] === array4[2]) // -> true

La méthode 4 est censée pointer vers le même objet. Si vous passez une instance de classe à la répétition, vous emballerez à plusieurs reprises exactement la même chose dans le tableau.

Recommended Posts

Swift: un piège pour définir plusieurs éléments initiaux dans un tableau
Lors de la recherche de plusieurs dans un tableau Java
Soyez prudent lorsque vous supprimez plusieurs éléments d'un tableau, etc. avec une instruction for
[Swift] Comment obtenir le nombre d'éléments dans un tableau (super basique)
Tableau multidimensionnel dans Swift
Multiplication dans un tableau Ruby
Que faire si une exception UnsupportedCharsetException se produit dans un JRE léger
Comment afficher la valeur lorsqu'il y a un tableau dans le tableau
Convertir un tableau de chaînes en une liste d'entiers en Java
Créer un compteur FPS avec Swift
Spécifiez plusieurs conditions de tri dans Swift
Augmenter dynamiquement le nombre d'éléments dans un tableau bidimensionnel Java (tableau multidimensionnel)
[Swift] Résumé de la suppression des éléments d'un tableau (mémo personnel)
Je veux ForEach un tableau avec une expression Lambda en Java
[Java] [Pour les débutants] Comment insérer des éléments directement dans un tableau à deux dimensions
[Note] [Débutant] Comment écrire lors de la modification de la valeur d'un élément de tableau dans une phrase répétée de Ruby