Sobes.tech
Junior — Middle

El tudná magyarázni a Property Wrapper működési elvét és hogyan használják Swiftben?

sobes.tech MI

Válasz az MI-től

A Property Wrapper Swiftben egy olyan mechanizmus, amely lehetővé teszi, hogy a hozzáférési logikát egy külön típusba csomagoljuk, így újra felhasználhatóvá és a kód tisztábbá válik.

A Property Wrapper segítségével meghatározhatjuk, hogy egy tulajdonság értékét hogyan tárolják, validálják vagy módosítják hozzárendelés és olvasás közben.

Egyszerű Property Wrapper példája, amely korlátozza egy szám értékét 0 és 100 között:

@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) // 100-at fog nyomtatva, mert az érték korlátozott

Itt a @propertyWrapper egy burkolót definiál, amely ellenőrzi a health tulajdonság hozzárendelését és olvasását. Ez lehetővé teszi a logika központosítását és több helyen való használatát anélkül, hogy duplikálnánk a kódot.