我试图在Swift 3中实现Church Numerals.目前,我有:
func numToChurch(n: Int) -> ((Int) -> Int) -> Int {
return { (f: (Int) -> Int) -> (Int) -> Int in
return { (x : Int) -> Int in
return f(numToChurch(n: n - 1)(f)(x))
}
}
}
func churchToNum(f: ((Int) -> Int) -> (Int)-> Int) -> Int {
return f({ (i : Int) -> Int in
return i + 1
})(0)
}
Run Code Online (Sandbox Code Playgroud)
在我的函数numToChurch的这一行:
return f(numToChurch(n: n - 1)(f)(x))
Run Code Online (Sandbox Code Playgroud)
我不断收到编译时错误"关闭非转义参数'f'可能允许它逃脱".作为快速修复,我接受了推荐的更改以包含@escaping:
func numToChurch(n: Int) -> ((Int) -> …Run Code Online (Sandbox Code Playgroud)