gpt4 book ai didi

javascript - 如何使用 UnderscoreJS 进行柯里化(Currying)?

转载 作者:数据小太阳 更新时间:2023-10-29 06:02:31 26 4
gpt4 key购买 nike

我正在尝试使用 _.bind(...)。我知道如何使用绑定(bind)强制函数上下文,但还不知道如何进行柯里化(Currying)。

我尝试的是:

 add = function(number) { this.sum = this.sum + number; }
add5 = _.bind(add, { sum: 0 }, 5)

但是,调用add5(),或者add5(5)似乎没有什么效果。

任何线索如何包装参数,以便从一个调用到另一个调用保留上下文?

最佳答案

可能您想做部分应用,而不是 currying/schönfinkeling。下划线有 _.partial为此功能:

function add(a, b) { return a+b; }
var add5 = _.partial(add, 5);

您也可以使用 _.bind ,并且它一些效果。例如:

var add5 = _.bind(add, null /*context is irrelevant*/, 5);
add5(3); // returns 8

但是,您的函数没有返回任何内容,并且您更改的上下文不可访问。然而:

var ctx1 = {sum: 0};
function add(a) { this.sum += a; } // returns nothing!
var addto1 = _.bind(add, ctx1);
addto1(5); // undefined
ctx1; // {sum: 5}

var add5to1 = _.bind(add, ctx1, 5);
add5to1(); // undefined
ctx1; // {sum: 10}

var ctx2 = {sum: 5};
add3to2 = _.bind(add, ctx2, 3);
add3to2(); // undefined
ctx2; // {sum: 8}

关于javascript - 如何使用 UnderscoreJS 进行柯里化(Currying)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521336/

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