Sobes.tech
Junior — Middle

Este posibil să implementați propriul dvs. wrapper de proprietate în limbajul Swift?

sobes.tech AI

Răspuns de la AI

Da, în Swift poți crea propriile tale învelișuri de proprietăți (property wrappers). Acesta este un tip special care încapsulează logica de acces și stocare a valorii proprietății.

Exemplu de un înveliș simplu care limitează valoarea proprietății într-un interval de la 0 la 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) // Va afișa 100, deoarece valoarea este limitată

Astfel, învelișurile permit reutilizarea și centralizarea logicii de lucru cu proprietățile.