Как стать автором
Обновить

Как автоматизировать безопасный декодинг массивов в Swift с @propertyWrapper

Время на прочтение7 мин
Количество просмотров3.2K
Всего голосов 16: ↑15 и ↓1+19
Комментарии6

Комментарии 6

@propertyWrapper
struct Abs {
    var wrappedValue: Int {
        didSet { wrappedValue = abs(wrappedValue) }
    }

    init(wrappedValue: Int) {
        self.wrappedValue = abs(wrappedValue)
    }
}

Тут точно всё так как вы задумали? На бесконечную рекурсию похоже.

Спасибо, что подметили. Тут так и задумано, но бесконечной рекурсии не получится, потому что наблюдатели свойств (didSet{}) начинают работать только после установки значения через init().

Пометил что? Да в ините не вызовется. Но как-только вызовется - тут же попадёт в рекурсию.

Пометил что?

Подметили, что тут может быть бесконечная рекурсия.

На самом деле блок didSet{} не вызывает повторного вызова самого себя. Можете проверить это в проекте или в playground.

А разве propertyWrapper не только для var?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий