【发布时间】:2019-06-06 04:21:51
【问题描述】:
我正在学习 currying,我决定尝试创建一个名为 getMin 的 curry 最小函数。
据我了解,这意味着我应该可以调用
getMinimum(5)(2)(6) 并让它返回 2。
我试图用一个简单的闭包来实现它,我想出了一些返回数字而不是函数的东西。这是我的代码:
function getMin(val){
var min = val
function calc(num){
if(num<min){
// set new minimum
min = num
return num
}
else {
return min
}
}
return calc
}
var x = getMin(5) // => 5
console.log(x(6))
console.log(x(4))
console.log(x(8))
console.log(x(2))
此日志:
5
4
4
2
这不符合柯里化的要求。
所以当我考虑如何更改此函数以使其返回一个函数时,我遇到了一个问题。每次使用数字参数调用 curried 函数时,它应该返回最小值(一个数字),但如果我理解正确,它也应该返回一个函数(以便可以用另一个数字再次调用它)。这是如何工作的?
【问题讨论】:
-
你永远不会登录
x,这是getMin(5)的回报。就是这个功能
标签: javascript functional-programming closures currying