在实例闭包变量中使用self

时间:2016-07-28 00:31:44

标签: swift closures

见下文。我理解变量闭包可以在任何对象中调用,因此不能在此闭包的上下文中定义self。

但是有可能定义someFn以便我可以使用" self"?

class A {
  var value:Int = 3
  var someFn:emptyFn = {
    // does not compile, self is not set
    print (self)
  }
}

A().someFn()

1 个答案:

答案 0 :(得分:2)

问题是您在初始化self实例之前使用A

所以还没有self

如果你在init内移动你的闭包的创作,它将起作用

class A {
    var value:Int = 3
    var someFn : () -> () = { }

    init() {
        someFn = { print(self) }
    }
}

A().someFn() // A
  

我需要在声明期间使用空值填充someFn,以便能够在self内使用init。在初始化所有没有默认值的属性之前,不能使用[{1}}(在self内)。