我试图在Swift中构建一个Promises的基本实现,我需要能够将函数添加到数组中,但我不知道如何让它工作。
class Promise {
var pending = []
func resolve() -> Void {
}
func then(success: (Void -> Void)) -> Promise {
// how do I add success to pending array?
return self
}
}
let p = Promise()
p.then({println("finished")})
我发现当我尝试做这样的事情时,Swift Playground不会建议append
:
self.pending.append(success)
哪个有道理--Swift无法推断self.pending
的类型 - 但这就是我的问题所在。我不确定如何预定义(Void -> Void)
函数数组。
是否可以在Swift中创建一个函数数组?我会假设,功能是一等公民。
答案 0 :(得分:25)
这绝对可能,只需将数组初始化为:
var pending = Array<(Void -> Void)>()
甚至是鸽友
var pending = Array<()->()>()
或
var pending: [(Void->Void)] = []
或
var pending: [(()->())] = []
或
var penguins: [<(") <(")] = [] // kidding
答案 1 :(得分:4)
这应该有效:
var pending: (() -> ())[]