【发布时间】:2020-11-19 19:35:52
【问题描述】:
我想创建一个返回如下咖喱函数的函数
func addTwoNumbers(a: Int)(b: Int) -> Int {
return a + b
}
addTwoNumbers(4)(b: 6) // Result: 10
var add4 = addTwoNumbers(4)
add4(b: 10) // returns 14
这种函数的返回类型是什么?如何使用带有可变参数的函数生成这样的函数。
func generateCurry(.../*Variadic parameters*/) -> .../*curry function type*/ {
return ...//curry function
}
我想要一个通用的解决方案,而不是只将 Int 作为 generateCurry 函数的参数中的参数
let curried = curry(func(a, b, c) {
print(a + b + c)
})
curried(1)(2)(3) //prints 6
【问题讨论】:
-
嗨,那么您想要做的是:一个将另一个函数作为参数的函数,并且在该函数内能够根据类型推断要调用哪个函数?此外,您的
curried现在打印 6,但是当它是String类型时,您想做什么? -
你可以有任何类型,但关键是只有在所有参数都被传递之后才评估在 curry 函数中传递的代码块。我已更新问题以显示使用 addTwoNumbers 方法的示例
-
我发现这篇文章russbishop.net/swift-function-currying 非常有用且解释清楚