2016-09-20 2 views
1

Может ли структура иметь ленивые свойства [экземпляр] в Swift?Может ли структура иметь ленивые свойства [экземпляр] в Swift?

Я не могу найти документацию, говорящую «да» или «нет». В качестве примеров все классы используются только как классы.

Если можно, можно ли найти пример где угодно?

Благодаря

Стан

ответ

2

да структура может иметь ленивое свойство. Рассмотрим следующий пример:

class Stuff { 
    var stuff: Int 

    init(value: Int) { 
     print("Stuff created with value \(value)") 
     stuff = value 
    } 
} 

struct HasLazy { 
    lazy var object = Stuff(value: 1) 
    var object2 = Stuff(value: 2) 
} 

func testIt() { 
    print("in testIt") 

    var haslazy = HasLazy() 

    print("done") 
    haslazy.object.stuff = 17 
    print("\(haslazy.object.stuff)") 
    print("final") 
} 

testIt() 

Выход:

in testIt 
Stuff created with value 2 
done 
Stuff created with value 1 
17 
final 

Обратите внимание, что свойство отмеченные lazy не не инициализирован, пока "done" гравюр, когда свойство первый доступ.

Посмотрите на него в действии here, а затем попробуйте без ключевого слова lazy.

+0

OK Отлично, только что я искал. Благодаря! – FTNomad

Смежные вопросы