函数返回一个返回函数的函数

时间:2014-12-30 12:46:46

标签: ios macos swift

我想让一个函数返回一个函数,该函数返回一个与第一个函数具有相同签名的函数。即该函数应该能够将自己作为返回值。

这可以在swift中实现吗?

示例(这不会编译!):

typealias nextStep = ((char: CChar) -> nextStep)

func process(char: CChar) -> nextStep {...}

2 个答案:

答案 0 :(得分:2)

托马斯的答案应该有效,但是如果你想要一个更安全的替代方案:

struct F {
    let f: (Character) -> F
}

func f(ch: Character) -> F {
    println("I've been called with an \(ch)!")
    return F(f: f)
}

let g = f("a")
let h = g.f("b")
h.f("c")

答案 1 :(得分:0)

像这样使用Any

typealias nextStep = ((char: CChar) -> Any)

func process(char: CChar) -> nextStep {
  return process
}