NEW: Get your ticket for Hacking with Swift Live 2019! >>

< Previous: Énumérations   Next: Classes >

Structures (Structs)

Les structures sont des types de données complexes, ce qui signifie qu'elles sont composées de plusieurs valeurs. Vous créez ensuite une instance de la structure et remplissez ses valeurs, vous pouvez ensuite la transmettre sous forme de valeur unique dans votre code. Par exemple, nous pourrions définir un type de structure Person (Personne) qui contient deux propriétés: clothes (vêtements) et shoes (chaussures) :

struct Person {
    var clothes: String
    var shoes: String
}

Lorsque vous définissez une structure, Swift la rend très facile à créer car elle gère automatiquement l'initialisation d'une instance. En clair, cela signifie que vous créez la structure en transmettant les valeurs initiales de ses deux propriétés, comme ceci :

let taylor = Person(clothes: "T-shirts", shoes: "sneakers")
let other = Person(clothes: "short skirts", shoes: "high heels")

Une fois que vous avez créé une instance d'une structure, vous pouvez lire ses propriétés en écrivant simplement le nom de la structure, un point, puis la propriété que vous souhaitez lire :

print(taylor.clothes)
print(other.shoes)

Si vous affectez une structure à une autre, Swift la copie en arrière-plan de sorte qu’il s’agisse d’un duplicata complet et autonome de l’original. Eh bien, ce n’est pas tout à fait vrai : Swift utilise une technique appelée "copie à l’écriture" (copy on write), ce qui signifie qu’elle ne copie vos données que si vous essayez de les modifier.

Pour vous aider à comprendre comment fonctionnent les copies de structures, entrez ceci dans votre playground :

struct Person {
    var clothes: String
    var shoes: String
}

let taylor = Person(clothes: "T-shirts", shoes: "sneakers")
let other = Person(clothes: "short skirts", shoes: "high heels")

var taylorCopy = taylor
taylorCopy.shoes = "flip flops"

print(taylor)
print(taylorCopy)

Ce code crée deux structures Person, puis en crée une troisième appelée taylorCopy en tant que copie de taylor. Ce qui se passe ensuite est la partie intéressante : le code change taylorCopy, et l’affiche ainsi que taylor. Si vous regardez dans le volet des résultats (vous devrez peut-être le redimensionner pour voir le résultat), vous constaterez que la copie a une valeur différente de celle de l'original : la modification de l'un n'a pas modifié l'autre.

Fonctions à l'intérieur de structures

Vous pouvez placer des fonctions dans des structures, ce qui est une bonne idée pour toutes les fonctions qui lisent ou modifient des données dans la structure. Par exemple, nous pouvons ajouter une fonction à notre structure Person pour décrire ce que la personne porte, comme ceci :

struct Person {
    var clothes: String
    var shoes: String

    func describe() {
        print("I like wearing \(clothes) with \(shoes)")
    }
}

Il y a encore une chose que vous devez savoir mais que vous ne pouvez pas voir dans ce code : quand vous écrivez une fonction dans une structure, cela s'appelle une méthode. En Swift, vous écrivez func, qu'il s'agisse d'une fonction ou d'une méthode, mais la distinction est préservée lorsque vous en parlez.

HACKING WITH SWIFT LIVE This July is a new two-day event where you'll be inspired by great speakers on day one then learn all the amazing new features from WWDC on day two – click here for more information and tickets.

< Previous: Énumérations   Next: Classes >
MASTER SWIFT NOW
Buy Testing Swift Buy Practical iOS 12 Buy Pro Swift Buy Swift Design Patterns Buy Swift Coding Challenges Buy Server-Side Swift (Vapor Edition) Buy Server-Side Swift (Kitura Edition) Buy Hacking with macOS Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with Swift Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Beyond Code

Was this page useful? Let me know!

Click here to visit the Hacking with Swift store >>