Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
699 views
in Technique[技术] by (71.8m points)

swift - How can I create an array of functions?

I'm trying to build out a basic implementation of Promises in Swift, and I need to be able to add functions to an array, but I'm not sure how to get that to work.

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

What I'm finding is that the Swift Playground won't suggest append when I try to do something like this:

self.pending.append(success)

Which makes sense - Swift can't infer the type of self.pending - but that's where my problem lies. I'm not sure how to predefine an array of (Void -> Void) functions.

Is it possible to create an array of functions in Swift? I would assume so, with functions being first-class citizens.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

It's definitely possible, just initialize the array as:

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

or even a fancier

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

or

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

or

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

or

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...