Sobes.tech
Junior — Middle

¿Se puede implementar un envoltorio propio para una propiedad en Swift?

sobes.tech AI

Respuesta de la IA

Sí, en Swift puedes crear tus propios envoltorios de propiedades (property wrappers). Este es un tipo especial que encapsula la lógica de acceso y almacenamiento del valor de la propiedad.

Ejemplo de un envoltorio simple que limita el valor de la propiedad en un rango de 0 a 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) // Imprimirá 100, ya que el valor está limitado

De esta manera, los envoltorios permiten reutilizar y centralizar la lógica de trabajo con las propiedades.