gpt4 book ai didi

javascript - 将 javascript 闭包转换为柯里化(Currying)函数

转载 作者:行者123 更新时间:2023-11-28 12:13:57 25 4
gpt4 key购买 nike

我正在学习柯里化(Currying),并决定尝试制作一个名为 getMin 的柯里化(Currying)最小函数。

据我了解,这意味着我应该能够打电话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

这不符合柯里化(Currying)的要求。

因此,当我考虑如何更改此函数以使其返回一个函数时,我遇到了问题。每次使用数字参数调用柯里化(Currying)函数时,它应该返回最小值(一个数字),但如果我正确理解这一点,它还应该返回一个函数(以便可以使用另一个数字再次调用它)。这是如何工作的?

最佳答案

您需要实现 toString函数,如果需要原始值,则返回结果,否则返回函数。

function getMinimum(m) {
function min(v) {
m = Math.min(m, v);
return min;
}
min.toString = _ => m;
return min;
}


console.log(getMinimum(5)(2)(6));
console.log(getMinimum(3)(2)(1)(-1000));

关于javascript - 将 javascript 闭包转换为柯里化(Currying)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54143236/

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