Javascript 如何访问Curry函数中上一个函数的结果?
我必须编写一个curry函数,它接受一个函数,执行另一个函数,然后通过将最后一个参数作为要计算的值来执行第二个函数 我正在努力解决的问题:如何同时访问第一个函数和最后的值? 到目前为止,我可以通过使用函数语法编写函数并访问this来访问第一个函数Javascript 如何访问Curry函数中上一个函数的结果?,javascript,currying,arrow-functions,Javascript,Currying,Arrow Functions,我必须编写一个curry函数,它接受一个函数,执行另一个函数,然后通过将最后一个参数作为要计算的值来执行第二个函数 我正在努力解决的问题:如何同时访问第一个函数和最后的值? 到目前为止,我可以通过使用函数语法编写函数并访问this来访问第一个函数 Function.prototype.foo = function(x) { // can't make currying functions by using functions keyword console.log(this, x); }
Function.prototype.foo = function(x) {
// can't make currying functions by using functions keyword
console.log(this, x);
};
(() => 10).foo(1);
当我写一个currying函数时,我可以访问第二个(x)和第三个(y)函数
Function.prototype.bar = x => y => {
// but also can't access this like in function syntax
console.log(x, y);
}
// how would I access 10 in bar?
(() => 10).bar(1)(2);
最后一个函数看起来像这样:
someFunc.then(someSecondFunc).then(someThirdFunc)(100)
非常感谢你的帮助 不确定它是否解决了您的问题,但您可以使用function关键字生成curry函数:
Function.prototype.bar = function(x) {
return function(y) {
console.log(x, y)
}
}
我无法实际验证这是否有效:
(function() {return 10}).bar(1)(2)
在任何情况下,ˋthisˋ都是函数,而不是返回值(10),因为函数没有被调用 通过使用curry函数和function关键字,我的答案如下所示:
Function.prototype.then = function(secondFct) {
const firstFct = this;
return function(value) {
return firstFct(secondFct(value));
}
}
非常感谢您的帮助。我不知道没有箭头功能我也可以使用currying函数。非常感谢你的帮助!