По сути, вы описываете переменную lazy
. Он вычисляет свой инициализатор один раз , когда значение выбирается впервые, и с тех пор использует сохраненное значение (если оно не заменено). Вы можете объединить это с инициализатором определения и вызова:
lazy var myProperty: PropertyType = {
let p = // perform some expensive one-time calculation here
return p
}()
В результате first раз, когда вы запрашиваете значение myProperty
, метод инициализатора запускается; но после этого используется предыдущий результат, и метод инициализатора больше никогда не запускается.