web-dev-qa-db-fra.com

Swift init Array avec capacité

Comment initialiser un tableau dans Swift avec une capacité spécifique?

J'ai essayé:

var grid = Array <Square> ()
grid.reserveCapacity(16)

mais obtenez l'erreur

expected declaration 
35
JuJoDi

Que diriez-vous:

class Square {

}

var grid = Array<Square>(count: 16, repeatedValue: Square());

Bien que cela appelle le constructeur pour chaque carré.

Si vous avez créé le tableau avec des instances Square facultatives, vous pouvez utiliser:

var grid2 = Array<Square?>(count: 16, repeatedValue: nil);

EDIT: Avec Swift3, cette signature d'initialisation a changé comme suit:

var grid3 = Array<Square>(repeating: Square(), count: 16)

ou

var grid4 = [Square](repeating: Square(), count: 16)

Bien sûr, les deux fonctionnent également avec Square? et nil.

48
Ben Clayton

Swift 3/Swift 4/Swift 5

var grid : [Square]?
grid?.reserveCapacity(16)

Je pense que cela peut également être réalisé sur une seule ligne.

16
Mert Celik
var actions:[AnyObject?] = [AnyObject?](count: 3, repeatedValue: nil)
12
Kvant

Essayer:

var grid = Array<Square>(count: 16, repeatedValue: aSquare)
3
Andrew Ebling