gpt4 book ai didi

javascript - 有没有办法在 Javascript 中进行可变递归柯里化(Currying)?

转载 作者:行者123 更新时间:2023-11-30 16:57:23 36 4
gpt4 key购买 nike

我知道可能没有任何理由使用它来代替其他创建可变参数函数的方法,但是在语义上是否可以定义一些东西来做到这一点?例如,它可以像 sum(1)(2)(3)(); 这样调用。我试图用下面的代码来实现它:

function sum(x) {
return function(y) {
if (!y) return 0;
else return x + sum(y);
};
}

但是,当调用它时会出现 TypeError: string is not a function。什么会导致它返回一个字符串?当我更仔细地检查它时,它看起来像是将函数的代码作为字符串返回,这对我来说毫无意义。也就是说,我对复杂的 JavaScript 的语义并不十分熟悉,因此我可能会遗漏其中的一些重要概念。

最佳答案

如评论中所述,x 是一个数字,sum(y) 是一个函数。在它们上使用 + 运算符使用它们的 gcd 类型,它们是字符串,无法调用。

你不能在 javascript 中使用 curry 运算符。您需要显式返回一个柯里化(Currying)函数,并告诉它何时计算值。对我们的功能的适当修复是

function sum(x) {
return function(y) {
if (!y) return x;
// ^
else return sum(x + y);
// ^^^
};
}

关于javascript - 有没有办法在 Javascript 中进行可变递归柯里化(Currying)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29454470/

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