Sobes.tech
Назад к вопросам
Junior — Middle
79

Можете объяснить принцип работы Property Wrapper и как он используется в Swift?

Компании, где спрашивали
Яндекс БраузерЯндекс Браузер

Ответ от нейросети

sobes.tech AI

Property Wrapper в Swift — это механизм, позволяющий обернуть логику доступа к свойству в отдельный тип, чтобы переиспользовать её и сделать код чище.

С помощью Property Wrapper можно определить, как значение свойства хранится, валидируется или изменяется при присвоении и чтении.

Пример простого Property Wrapper, который ограничивает значение числа в диапазоне от 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, так как значение ограничено

Здесь @propertyWrapper определяет обертку, которая контролирует присваивание и чтение свойства health. Это позволяет централизовать логику и использовать её в разных местах без дублирования кода.