Junior — Middle
Може ли да реализирате собствен обвивка на свойство в езика Swift?
sobes.tech AI
Отговор от AI
Да, в Swift можете да създавате свои собствени обвивки на свойства (property wrappers). Това е специален тип, който капсулира логиката за достъп и съхранение на стойността на свойството.
Пример за прост обвивка, която ограничава стойността на свойството в диапазон от 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) // Ще изведе 100, тъй като стойността е ограничена
По този начин, обвивките позволяват повторно използване и централизация на логиката за работа със свойства.