SALE ENDS TODAY: Save 50% on all Swift books and bundles! >>

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.

SPONSORED Instabug helps you identify and resolve severe crashes quickly. You can retrace in-app events and know exactly which line of code caused the crash along with environment details, network logs, repro steps, and the session profiler. Ask more questions or keep users up-to-date with in-app replies straight from your dashboard. Instabug takes data privacy seriously, so no one sees your data but you! See more detailed features comparison and try Instabug's crash reporting SDK for free.

Save 50% on all books and bundles

The biggest ever Hacking with Swift sale is now on, letting you save 50% on all books and bundles. Learn something new with Swift and enjoy great savings while the sale lasts!

Click here to save 50% in our Black Friday sale!

BUY OUR BOOKS
Buy Pro Swift Buy Swift Design Patterns Buy Testing Swift Buy Hacking with iOS Buy Swift Coding Challenges Buy Swift on Sundays Volume One Buy Server-Side Swift (Vapor Edition) Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Advanced iOS Volume Three Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with macOS Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Server-Side Swift (Kitura Edition) Buy Beyond Code

Was this page useful? Let us know!