在 livescript 中将匿名函数作为参数传递
passing anonymous functions as parameters in livescript
在 liveScript 中将函数作为参数传递的正确方法是什么?
例如,假设我想使用数组 reduce 函数,在对流中 javascript 我会这样写
myArray.reduce(function (a,b) {return a + b});
这可以很好地转换为 liveScript 为:
myArray.reduce (a,b) -> a + b
现在,我想通过提供第二个参数来设置初始值:
myArray.reduce(function (a,b) {return a + b},5);
我如何将其翻译成 liveScript?似乎第一个函数覆盖了传递额外参数以减少的任何能力。
如果我遗漏了一些明显的东西,我深表歉意,但我似乎无法在文档中找到与此场景相关的任何内容
您必须将闭包包裹在 ()
中
[1,2,3].reduce ((a,b) -> a + b), 0
编译为
[1, 2, 3].reduce(function(a, b){
return a + b;
}, 0);
为了补充其他答案,LiveScript 提供了 binops,只需在运算符两边加上括号即可。
[1 2 3].reduce (+), 0
对于更复杂的功能,我建议你使用这种风格
[1, 2, 3].reduce do
(a, b) ->
# your code here
0
你可以在上面使用~
to bind the this
argument, then call flip
来交换第一个和第二个参数:
flip [1, 2, 3]~reduce, 0, (a, b) -> a + b
如果回调主体很长,这可能更具可读性。
在 liveScript 中将函数作为参数传递的正确方法是什么?
例如,假设我想使用数组 reduce 函数,在对流中 javascript 我会这样写
myArray.reduce(function (a,b) {return a + b});
这可以很好地转换为 liveScript 为:
myArray.reduce (a,b) -> a + b
现在,我想通过提供第二个参数来设置初始值:
myArray.reduce(function (a,b) {return a + b},5);
我如何将其翻译成 liveScript?似乎第一个函数覆盖了传递额外参数以减少的任何能力。
如果我遗漏了一些明显的东西,我深表歉意,但我似乎无法在文档中找到与此场景相关的任何内容
您必须将闭包包裹在 ()
[1,2,3].reduce ((a,b) -> a + b), 0
编译为
[1, 2, 3].reduce(function(a, b){
return a + b;
}, 0);
为了补充其他答案,LiveScript 提供了 binops,只需在运算符两边加上括号即可。
[1 2 3].reduce (+), 0
对于更复杂的功能,我建议你使用这种风格
[1, 2, 3].reduce do
(a, b) ->
# your code here
0
你可以在上面使用~
to bind the this
argument, then call flip
来交换第一个和第二个参数:
flip [1, 2, 3]~reduce, 0, (a, b) -> a + b
如果回调主体很长,这可能更具可读性。