加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Swift 4中使用函数currying

发布时间:2020-12-14 02:25:46 所属栏目:百科 来源:网络整理
导读:我尝试理解 function currying tutorial,但该代码似乎过时了.功能调整还不是很清楚. 我试试这个功能: func curryA,B,C(_ f: @escaping (A,B) - C) - (A) - (B) - C { return { a in { b in f(a,b)} }} 它与Playground(Xcode 9 beta 6)运行良好.但问题是我无
我尝试理解 function currying tutorial,但该代码似乎过时了.功能调整还不是很清楚.

我试试这个功能:

func curry<A,B,C>(_ f: @escaping (A,B) -> C) -> (A) -> (B) -> C {
    return { a in { b in f(a,b)} }
}

它与Playground(Xcode 9 beta 6)运行良好.但问题是我无法使用此功能作为教程:

let add = curry(+)
let xs = 1...100
let x = xs.map(add(2))

上面的代码返回错误:

Playground execution failed:

    error: FunctionsCurrying.playground:31:17: error: ambiguous use of operator '+'
    let add = curry(+)
                    ^

请纠正我并帮助我清楚功能currying.

那个问题不是Swift 4相关的,你会得到同样的错误
Swift 3中的消息.

因此,有许多重载运算符

let add = curry(+)

编译器不知道选择哪一个.使用显式类型

let add = curry((+) as ((Int,Int) -> Int))

或显式类型注释

let op: (Int,Int) -> Int = (+)
let add = curry(op)

代码编译并按预期运行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读