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.