Назад к вопросам
Middle
316
Что такое обертка свойства (property wrapper) в Swift?
Ответ от нейросети
sobes.tech AI
Обертка свойства (property wrapper) в Swift — это специальный тип, который позволяет инкапсулировать логику доступа и хранения значения свойства. Она помогает переиспользовать код, связанный с валидацией, кэшированием, синхронизацией и другими аспектами управления свойствами.
Обертка объявляется с помощью атрибута @propertyWrapper и содержит, как минимум, свойство wrappedValue, которое хранит значение. При использовании обертки к свойству автоматически применяется эта логика.
Пример простой обертки, которая ограничивает значение числа в диапазоне от 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 // фактически установится 100
Таким образом, property wrapper упрощает декларативное управление поведением свойств и улучшает читаемость кода.