Назад к вопросам
Middle
150
questionbank
Что такое обертка свойства (property wrapper) в Swift?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Обертка свойства — это тип, который добавляет слой логики к свойству, инкапсулируя гетер и сетер. Это позволяет переиспользовать код для управления доступом и хранением свойства, например, для валидации, ленивой инициализации или синхронизации.
Основные компоненты:
- Тип, помеченный
@propertyWrapper. - Свойство
wrappedValue, которое обращается к базовому значению. - (Опционально) Свойство
projectedValue, которое предоставляет дополнительную информацию или функциональность.
Пример:
@propertyWrapper
struct LimitedValue {
private var storage: Int = 0
var wrappedValue: Int {
get { storage }
set { storage = min(max(newValue, 0), 100) } // Ограничиваем значение от 0 до 100
}
}
struct MyStruct {
@LimitedValue var progress: Int
}
let instance = MyStruct()
instance.progress = 150 // Значение будет ограничено до 100
print(instance.progress) // 100