小编fay*_*che的帖子

在Swift 3中实现Church Numerals时出现非转义错误

我试图在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)

functional-programming church-encoding church swift swift3

4
推荐指数
1
解决办法
413
查看次数