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.