Играя немного с Swift, я попытался написать readonly и lazy initialized property. Я быстро написал эту строку кода, чтобы узнать, что это запрещено.Lazy readonly property in swift
// no valid Swift code.
lazy let foo : Int = { return 42 }()
Вы должны объявить ленивые должности как var
. Стремительная книга четко говорится, что пусть с ленивым не представляется возможное по уважительной причине:
«Вы всегда должны объявить ленивое свойство как переменные (с варом ключевым словом), потому что его начальное значение не может быть восстановлено пока не завершится инициализация экземпляра. Постоянные свойства всегда должны иметь значение до того завершения инициализации, и, следовательно, не могут быть объявлены как ленивые.»
Предположив Я хотел бы иметь только для чтения ленивой недвижимости в стриже. Каков наилучший способ архивирования?
Частный сеттер для меня достаточно. Я часто использую этот шаблон в C#. – MBulli
Я думаю, что это эквивалентно '' 'private (set) lazy var foo = 42'''. Если вы отмечаете, что сеттер является закрытым, нет смысла объявлять геттер только для того, чтобы опустить установщик. –
Это не был геттер, это ленивое закрытие экземпляра, но оно не обязательно, так как оно не содержит никакой логики. Вот почему 'private (set) lazy var foo = 42' будет работать точно так же. – Danchoys