Sobes.tech
Junior — Middle

Is het mogelijk om je eigen eigenschap-wrapper te implementeren in de Swift-taal?

sobes.tech AI

Antwoord van AI

Ja, in Swift kun je je eigen property wrappers maken. Dit is een speciaal type dat de logica voor toegang en opslag van de eigenschapwaarde encapsuleert.

Voorbeeld van een eenvoudige wrapper die de waarde van de eigenschap beperkt tot een bereik van 0 tot 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) // Zalijst 100, omdat de waarde beperkt is

Op deze manier maken wrappers hergebruik en centralisatie van de logica voor het werken met eigenschappen mogelijk.