gpt4 book ai didi

swift - 如何在 Swift 4 中使用函数柯里化(Currying)

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:23 24 4
gpt4 key购买 nike

我试着理解 function currying tutorial但该代码似乎已过时。而且函数柯里化(Currying)仍然不是很清楚。

我尝试使用这个函数:

 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(+)

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

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

或显式类型注解

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

代码按预期编译和运行。

关于swift - 如何在 Swift 4 中使用函数柯里化(Currying),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46154375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com