如何在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) 代码编译并按预期运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |