Комментарии 6
@propertyWrapper
struct Abs {
var wrappedValue: Int {
didSet { wrappedValue = abs(wrappedValue) }
}
init(wrappedValue: Int) {
self.wrappedValue = abs(wrappedValue)
}
}
Тут точно всё так как вы задумали? На бесконечную рекурсию похоже.
Спасибо, что подметили. Тут так и задумано, но бесконечной рекурсии не получится, потому что наблюдатели свойств (didSet{}) начинают работать только после установки значения через init().
Пометил что? Да в ините не вызовется. Но как-только вызовется - тут же попадёт в рекурсию.
Пометил что?
Подметили, что тут может быть бесконечная рекурсия.
На самом деле блок didSet{} не вызывает повторного вызова самого себя. Можете проверить это в проекте или в playground.
да. действительно. хотя и не всегда: https://stackoverflow.com/q/68004198/751932
А разве propertyWrapper не только для var?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как автоматизировать безопасный декодинг массивов в Swift с @propertyWrapper