我想让一个函数返回一个函数,该函数返回一个与第一个函数具有相同签名的函数。即该函数应该能够将自己作为返回值。
这可以在swift中实现吗?
示例(这不会编译!):
typealias nextStep = ((char: CChar) -> nextStep)
func process(char: CChar) -> nextStep {...}
答案 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
}