一尘不染

如何创建函数数组?

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")})

我发现,append当我尝试执行以下操作时,Swift Playground不会建议您:

self.pending.append(success)

这很有道理-Swift无法推断出-的类型,self.pending但这就是我的问题所在。我不确定如何预定义(Void -> Void)函数数组。

是否可以在Swift中创建函数数组?我想是这样,职能是一等公民。


阅读 578

收藏
2020-07-07

共1个答案

一尘不染

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

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

甚至是鸽友

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

要么

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

要么

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

要么

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