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