UPGRADE YOUR SKILLS: Learn advanced Swift and SwiftUI on Hacking with Swift+! >>

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 is sponsored by Essential Developer

SPONSORED Join a FREE crash course for mid/senior iOS devs who want to achieve an expert level of technical and practical skills – it’s the fast track to being a complete senior developer! Hurry up because it'll be available only until April 28th.

Click to save your free spot now

Sponsor Hacking with Swift and reach the world's largest Swift community!

BUY OUR BOOKS
Buy Pro Swift Buy Pro SwiftUI 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 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 Beyond Code

Was this page useful? Let us know!

Average rating: 3.0/5

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.