Structures Swift
Les structures Swift sont une construction générale et flexible utilisée pour construire du code.
Nous pouvons définir des propriétés (constantes, variables) et ajouter des méthodes aux structures, étendant ainsi les fonctionnalités des structures.
Contrairement à C et Objective-C :
Les structures n'ont pas besoin de contenir des fichiers d'implémentation et des interfaces.
Les structures nous permettent de créer un seul fichier, et le système génère automatiquement une interface externe pour le reste du code.
Les structures sont toujours transmises dans le code par copie, de sorte que leurs valeurs ne peuvent pas être modifiées.
Syntaxe
Nous définissons une structure à l'aide du mot-clé `struct` :
struct nameStruct {
Definition 1
Definition 2
……
Definition N
}
Exemple
Nous définissons une structure nommée `MarkStruct`. Les propriétés de la structure sont les notes de trois matières d'un étudiant, avec un type de données `Int` :
struct MarkStruct{
var mark1: Int
var mark2: Int
var mark3: Int
}
Nous pouvons accéder aux membres d'une structure via le nom de la structure.
L'instanciation d'une structure utilise le mot-clélet:
import Cocoa
struct studentMarks {
var mark1 = 100
var mark2 = 78
var mark3 = 98
}
let marks = studentMarks()
print("Mark1 是 \(marks.mark1)")
print("Mark2 是 \(marks.mark2)")
print("Mark3 是 \(marks.mark3)")
La sortie de l'exécution du programme ci-dessus est :
Mark1 是 100 Mark2 是 78 Mark3 是 98
Dans l'exemple, nous accédons aux notes de l'étudiant via le nom de structure 'studentMarks'. Les membres de la structure sont initialisés comme mark1, mark2, mark3, avec un type de données entier.
Ensuite, nous utilisons le mot-cléletpour instancier la structure `studentMarks()` et la passer à `marks`.
Enfin, nous utilisons le.point pour accéder aux valeurs des membres de la structure.
L'instanciation suivante passe des valeurs lors de l'instanciation de la structure et clone une structure :
import Cocoa
struct MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct // aStruct 和 bStruct 是使用相同值的结构体!
bStruct.mark = 97
print(aStruct.mark) // 98
print(bStruct.mark) // 97
La sortie de l'exécution du programme ci-dessus est :
98 97
Applications des structures
Dans votre code, vous pouvez utiliser des structures pour définir vos types de données personnalisés.
Les instances de structure sont toujours passées par valeur pour définir vos types de données personnalisés.
Selon les directives générales, envisagez de créer une structure lorsqu'une ou plusieurs des conditions suivantes sont remplies :
- Le but principal d'une structure est d'encapsuler un petit nombre de valeurs de données simples associées.
- Il y a lieu de s'attendre à ce que, lorsqu'une instance de structure est assignée ou passée, les données encapsulées soient copiées plutôt que référencées.
- Toutes les propriétés de type valeur stockées dans une structure seront également copiées, plutôt que référencées.
- Les structures n'ont pas besoin d'hériter des propriétés ou du comportement d'un autre type existant.
Par exemple, les structures conviennent dans les situations suivantes :
- La taille d'une forme géométrique, encapsulant une
widthpropriété etheightpropriété, toutes deux deDoubletype. - Un chemin dans une certaine plage, encapsulant une
startpropriété etlengthpropriété, toutes deux deInttype. - Un point dans un système de coordonnées tridimensionnel, encapsulant
x,yetzpropriétés, toutes trois deDoubletype.
Les instances de structure sont passées par valeur, et non par référence.
import Cocoa
struct markStruct{
var mark1: Int
var mark2: Int
var mark3: Int
init(mark1: Int, mark2: Int, mark3: Int){
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}
print("优异成绩:")
var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
print(marks.mark1)
print(marks.mark2)
print(marks.mark3)
print("糟糕成绩:")
var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)
print(fail.mark1)
print(fail.mark2)
print(fail.mark3)
La sortie de l'exécution du programme ci-dessus est :
优异成绩: 98 96 100 糟糕成绩: 34 42 13
Dans l'exemple ci-dessus, nous avons défini la structure `markStruct` avec trois propriétés membres : mark1, mark2 et mark3. À l'intérieur de la structure, le mot-clé `self` est utilisé pour les propriétés membres.
D'après l'exemple, nous pouvons clairement comprendre que les instances de structure sont passées par valeur.
Autres extensions