Отложенная или ленивая инициализация lazy

Свойства с отложенной инициализацией или свойства ленивого хранения — свойство, начальное значение которого не рассчитывается до первого использования. Индикатор ленивого свойства — ключевое слово lazy.

Ленивые свойства полезны, когда исходное значение свойства зависит от внешних факторов, значения которых неизвестны до окончания инициализации. Так же ленивые свойства полезны, когда начальное значение требует комплексных настроек или сложных вычислений, которые не должны быть проведены до того момента, пока они не понадобятся.

Т.е. свойства с отложенной инициализацией удовлетворяют правилу: «Все свойства должны быть инициализированы» и инициализация свойства происходит уже после инициализации класса. Поэтому в качестве инициализатора мы можем вызвать метод класса. И это будет законно, т.к. класс со всеми методами уже инициализирован.

Вот пример из книги по Swift от Apple:

При декларировании можно также поставит знак «=» и { } т.е. присвоить замыкание. Оно также не выполнится до тех пор, пока кто нибудь не обратится к этому свойству.

Важно помнить lazy свойства могут быть только var. Не могут быть let.

Опубликовано в Iron ribbon, Фундаментальные основы Метки:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*