懒惰的可选属性总是零?

Ada*_*ler 10 swift

是否有一个原因,以下代码总是打印出来?

class Foo
{
    @lazy var bar: Int? = 5
}

println(Foo().bar)
Run Code Online (Sandbox Code Playgroud)

我认为当访问bar属性时,它将被初始化为5.

dav*_*avl 0

因为 bar 被包裹在可选中。您需要先将其拆开才能使用。要么与!运算符或 if let 语句。

编辑:

与本机类型一起使用时似乎存在错误@lazy。看到这个问题。请记住,Swift 尚未达到 1.0,因此编译器可能存在一些错误,并且语言可能会发生变化。

  • 取消“@lazy”变量会使应用程序崩溃。您想在否决之前重新考虑您的答案吗? (2认同)