如何创建函数数组?

时间:2014-06-06 18:39:27

标签: swift

我试图在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中创建一个函数数组?我会假设,功能是一等公民。

2 个答案:

答案 0 :(得分:25)

这绝对可能,只需将数组初始化为:

var pending = Array<(Void -> Void)>()

甚至是鸽友

var pending = Array<()->()>()

var pending: [(Void->Void)] = []

var pending: [(()->())] = []

var penguins: [<(") <(")] = [] // kidding

答案 1 :(得分:4)

这应该有效:

var pending: (() -> ())[]