Назад к вопросам
Middle
151
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