Avatar
lazyなインスタンス変数なら、クロージャの中身は呼ばずにsetterを呼び出せるので、仕様上lazyであるstatic変数だと出来ない仕様になっているのは謎だなぁ、と思いまして… ローカル変数はlazyじゃないですしね… class Hoge { lazy var a: Int = { preconditionFailure() }() } let h = Hoge() h.a = 1 print(h.a) (edited)