Para más información, leer la documentación.
Un "property wrapper" permite encapsular un comportamiento en una propiedad. Por definición, es una estructura precedida por la palabra clave @propertyWrapper que incluye un atributo computado con el nombre wrappedValue para procesar y almacenar el valor de la propiedad. La estructura debe incluir un inicializador para el atributo wrappedValue.
@propertyWrapper
struct ValorLimitado {
private var storedValue: Int = 0
var wrappedValue: Int {
get {
storedValue
}
set {
if newValue > 128 {
storedValue = 128
} else if newValue < 0 {
storedValue = 0
} else {
storedValue = newValue
}
}
}
init(wrappedValue: Int) {
self.wrappedValue = wrappedValue
}
}
Luego, se puede usar el comportamiento definido en el property wrapper, declarando las propiedades precedidas con el nombre del property wrapper, que debe tener el caracter @ como prefijo.
struct Client {
@ValorLimitado var myValue: Int = 0
mutating func incrementar() {
myValue += 999
print(myValue) // 128
}
}
var x = Client()
x.incrementar()
Top comments (0)