Structures en Swift

Introduction aux Structures

Les structures sont un concept clé en programmation qui permet de représenter des objets du monde réel dans le code. Elles sont définies à l’aide du mot-clé struct, suivi du nom et d’un bloc contenant les propriétés et les méthodes de la structure.

Définir une Structure

Pour illustrer, voyons un exemple simple où nous créons une structure qui représente un bâtiment :

struct Bâtiment {
    var adresse: String
    var étages: Int

    init(adresse: String, étages: Int) {
        self.adresse = adresse
        self.étages = étages
    }
}

Notez que toutes les propriétés stockées dans les structures doivent se conformer au protocole Hashable. Cela signifie qu'elles doivent être capables de générer une représentation unique.

Valeurs Par Défaut des Propriétés

Les propriétés d’une structure peuvent avoir des valeurs par défaut préattribuées, éliminant ainsi la nécessité d’assigner manuellement ces valeurs lors de l'initialisation. Voici comment procéder :

struct Voiture {
    var nombreDeRoux = 4
    var vitesseMax = 100
}
var citroen = Voiture(nombreDeRoux: 2)
print(citroen.nombreDeRoux) // Affiche : 2
print(citroen.vitesseMax)    // Affiche : 100

Création d'Instance de Structure

Pour créer une nouvelle instance d’une structure, utilisez le nom de la structure suivi de parenthèses et des arguments nécessaires :

struct Personne {
    var nom: String
    var age: Int
}

var morty = Personne(nom: "Morty", age: 14)

Méthode d'Initialisation

Les structures peuvent avoir une méthode d’initialisation init() pour définir les valeurs des propriétés de l’instance. Contrairement à d’autres méthodes, la méthode d’initialisation n’a pas besoin du mot-clé func, et utilise self pour faire référence à l’instance actuelle :

init(nom: String) {
    self.nom = nom
}

Méthodes de Structure

Les méthodes dans une structure fonctionnent de manière semblable aux fonctions, mais elles sont spécifiques à une instance. Pour appeler une méthode, utilisez la notation par point :

struct Chien {
    func aboyer() {
        print("Ouaf")
    }
}

let fido = Chien()
fido.aboyer() // Affiche : Ouaf

Méthodes Mutables

Les méthodes marquées avec le mot-clé mutating peuvent modifier les propriétés de l'instance elles-mêmes. Voici un exemple avec un menu :

struct Menu {
    var plats = ["Frites", "Burgers"]

    mutating func ajouterAuMenu(plat: String) {
        self.plats.append(plat)
    }
}

var menuDiner = Menu()
menuDiner.ajouterAuMenu(plat: "Salade")
print(menuDiner.plats) // Affiche : ["Frites", "Burgers", "Salade"]

Conclusion

Les structures en Swift sont un moyen puissant de modéliser des objets complexes et de structurer votre code de manière logique. Elles permettent d’organiser des données et des comportements similaires sous une même entité.