В чем разница между ленивым вар нормальным и закрытием инстанцирования? - PullRequest
0 голосов
/ 07 января 2020
lazy var propertyOne: BabyYoda = BabyYoda(delegate: self.mandalorian)

против

lazy var propertyTwo: BabyYoda = {return BabyYoda(delegate: self.mandalorian)}()

Является ли один более эффективным, чем другой? Компилируются ли они в один и тот же код? Я понимаю, что propertyTwo допускает дополнительные строки кода (например, настраивает дополнительные объекты в объекте BabyYoda), но это единственное различие, о котором я могу думать.

1 Ответ

1 голос
/ 07 января 2020

Второй синтаксис, который я называю «define and call», является легальным способом инициализации свойства экземпляра с использованием нескольких строк кода.

Обратите внимание, что, по сути, это не имеет ничего общего с lazy, что не имеет отношения к конкретному вопросу, который вы задаете. Фактически lazy - это просто способ придания законности произнесению self.mandalorian в этом инициализаторе свойства экземпляра. Это интересно, но это совсем другое дело.

...