Junior — Middle
É possível implementar o seu próprio wrapper de propriedade na linguagem Swift?
sobes.tech IA
Resposta da IA
Sim, no Swift pode criar os seus próprios wrappers de propriedades (property wrappers). Este é um tipo especial que encapsula a lógica de acesso e armazenamento do valor da propriedade.
Exemplo de um wrapper simples que limita o valor da propriedade numa faixa 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) // Vai imprimir 100, pois o valor está limitado
Desta forma, os wrappers permitem reutilizar e centralizar a lógica de trabalho com as propriedades.