Es gibt verschiedene Möglichkeiten, mehrere Anfangselemente in einem Array festzulegen.
class Hoge {
var num: Int
init(num: Int) {
self.num = num
}
}
//Methode 1
var array1: [Hoge] = [
Hoge(num: 0),
Hoge(num: 0),
Hoge(num: 0)
]
//Methode 2
var array2 = [Hoge]()
for _ in (0 ..< 3) {
array2.append(Hoge(num: 0))
}
//Methode 3
var array3: [Hoge] = (0 ..< 3).map({ _ -> Hoge in
return Hoge(num: 0)
})
//Methode 4
var array4 = [Hoge](repeating:Hoge(num:0),count:3)
//Es kann andere geben
Wenn man sich hier auf Methode 4 konzentriert, scheint es, dass sie gut initialisiert werden kann, indem das Anfangselement an die Wiederholung übergeben wird und die Anzahl der zu zählenden Elemente, aber es gibt Unterschiede zu den anderen drei Methoden.
//Vergleichen Sie die Elemente mit Methode 1
print(array1[0] === array1[1]) // -> false
print(array1[1] === array1[2]) // -> false
//Das Ergebnis ist Methode 2,Gleiches gilt für 3
//Vergleichen Sie die Elemente mit Methode 4
print(array4[0] === array4[1]) // -> true
print(array4[1] === array4[2]) // -> true
Methode 4 soll auf dasselbe Objekt zeigen. Wenn Sie eine Klasseninstanz an repeating übergeben, packen Sie wiederholt genau dasselbe in das Array.