将匿名函数作为参数传递给lifecript

时间:2015-12-07 17:35:12

标签: javascript 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?似乎第一个函数会覆盖任何传递其他参数以减少的能力。

道歉,如果我错过了一些明显的东西,但我似乎无法在文档中找到与此场景相关的任何内容

4 个答案:

答案 0 :(得分:2)

对于更复杂的功能,我建议你使用这种风格

[1, 2, 3].reduce do
  (a, b) ->
    # your code here
  0

答案 1 :(得分:2)

您可以使用~绑定this参数,然后在其上调用flip来交换第一个和第二个参数:

flip [1, 2, 3]~reduce, 0, (a, b) -> a + b

如果回调体非常长,这可能更具可读性。

答案 2 :(得分:1)

你必须在()

中包装闭包
[1,2,3].reduce ((a,b) -> a + b), 0

编译到

[1, 2, 3].reduce(function(a, b){
  return a + b;
}, 0);

答案 3 :(得分:0)

为了补充其他答案,LiveScript提供了binops,只需在操作员周围加上括号。

[1 2 3].reduce (+), 0