Sobes.tech
Junior — Middle

Peut-on implémenter son propre wrapper de propriété en Swift?

sobes.tech IA

Réponse de l'IA

Oui, en Swift, vous pouvez créer vos propres wrappers de propriétés (property wrappers). Il s'agit d'un type spécial qui encapsule la logique d'accès et de stockage de la valeur d'une propriété.

Exemple d'un wrapper simple qui limite la valeur d'une propriété dans une plage de 0 à 100 :

@propertyWrapper
struct Clamped {
    private var value: Int
    private let range: ClosedRange<Int>

    var wrappedValue: Int {
        get { value }
        set { value = min(max(newValue, range.lowerBound), range.upperBound) }
    }

    init(wrappedValue initialValue: Int, _ range: ClosedRange<Int>) {
        self.range = range
        self.value = min(max(initialValue, range.lowerBound), range.upperBound)
    }
}

struct Player {
    @Clamped(0...100) var health: Int = 100
}

var player = Player()
player.health = 150
print(player.health) // Affichera 100, car la valeur est limitée

Ainsi, les wrappers permettent de réutiliser et de centraliser la logique de gestion des propriétés.