【发布时间】:2015-11-03 17:39:52
【问题描述】:
目前我有一些这样的快速代码:
class C {
let type: Type;
var num = 0;
init() {
self.type = Type({ (num: Int) -> Void in
self.num = num;
});
}
}
Swift 编译器拒绝允许它,说我在初始化之前引用了self.type,尽管这显然完全不真实。此外,我不能使用在其他问题/答案中找到的解决方法,因为 type 不是可选的,而且它是不可变的,所以不能先用 nil 毫无意义地初始化它。
如何让 Swift 编译器接受这个完全有效的代码?
这与提前从初始化程序返回无关。回调是异步执行的——它被存储并在以后使用。
我还有一些lets 在此之后初始化。我必须将它们 all 变成可变的可选项,即使它们不是可选的并且不能被变异。
【问题讨论】:
-
请问什么是“类型”?
-
没关系。在构造函数中接受该签名的回调的任何类型。]
-
你说得对,我删除了它。
标签: swift closures initializer