Немного поиграв со Swift, я попытался написать свойство readonly и lazy initialized. Я быстро написал эту строку кода, чтобы узнать, что это не разрешено.
// no valid Swift code.
lazy let foo : Int = { return 42 }()
Вы должны объявить ленивые свойства как var
. В быстрой книге четко сказано, что пускать с ленивым нельзя по уважительной причине:
"Вы всегда должны объявлять свойство lazy как переменную (с ключевым словом var), потому что его начальное значение не может быть получено до завершения инициализации экземпляра. Свойства константы всегда должны иметь значение до завершения инициализации, и поэтому не могут быть объявлены как lazy ".
Предположим, я хотел бы иметь свойство readonly lazy в swift. Какой лучший способ архивировать это?