Junior — Middle
Peut-on implémenter son propre wrapper de propriété en Swift?
sobes.tech IA
Réponse de l'IA
Oui, en Swift, vous pouvez créer vos propres wrappers de propriétés (property wrappers). Il s'agit d'un type spécial qui encapsule la logique d'accès et de stockage de la valeur d'une propriété.
Exemple d'un wrapper simple qui limite la valeur d'une propriété dans une plage de 0 à 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) // Affichera 100, car la valeur est limitée
Ainsi, les wrappers permettent de réutiliser et de centraliser la logique de gestion des propriétés.