2017-10-12 5 views
-5

Je suis nouveau à Swift et essaye de porter du code. J'ai ceci d'un ancien projet:Initialisation de structure simple dans Swift (4)?

typedef struct { 
    float Position[3]; 
    float Normal[3]; 
    float TexCoord[2]; // New 
} iconVertex; 

const iconVertex iconVertices[] = { 
    {{0.0,0.0, 0.0}, {0, 0, 1.0}, {0, 0}}, 
    {{1.0, 0.0, 0.0}, {0, 0, 1.0}, {1, 0}}, 
    {{0.0, 1.0, 0.0}, {0, 0, 1.0}, {0, 1}}, 
    {{1.0, 1.0, 0.0}, {0, 0, 1.0}, {1, 1}}, 
}; 

Est-il possible de faire cette même initialisation de tableau dans Swift? Merci!

Répondre

1

Dans Swift, vous pouvez utiliser Structs pour définir vos objets et créer une méthode init qui reçoit les paramètres que vous devez initialiser.

struct IconVertex { 
    var position: [Double] 
    var normal: [Double] 
    var textCoord: [Double] 

    init(position: [Double], normal: [Double], textCoord: [Double]) { 
     self.position = position 
     self.normal = normal 
     self.textCoord = textCoord 
    } 
} 

let iconVertices: [IconVertex] = [ 
IconVertex(position: [0.0,0.0, 0.0], normal: [0, 0, 1.0], textCoord: [0, 0]), 
IconVertex(position: [1.0, 0.0, 0.0], normal: [0, 0, 1.0], textCoord: [1, 0]), 
IconVertex(position: [0.0, 1.0, 0.0], normal: [0, 0, 1.0], textCoord: [0, 1]), 
IconVertex(position: [1.0, 1.0, 0.0], normal: [0, 0, 1.0], textCoord: [1, 1])] 
+5

Vous n'avez pas besoin du 'init'. Avec un 'struct' vous obtenez automatiquement un tel' init' si vous n'en fournissez pas d'autres. – rmaddy

+0

Bon point! Mais comme il porte du code, j'ai pensé qu'il était utile de montrer comment créer un 'init' aussi – jvrmed

+0

Vous voulez probablement utiliser' Vector3D' ou tuple au lieu de tableau pour les types de propriétés. –