0

在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

4 回答 4

2

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

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

如果回调主体很长,这可能更具可读性。

于 2015-12-25T12:38:41.197 回答
2

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

[1, 2, 3].reduce do
  (a, b) ->
    # your code here
  0
于 2015-12-24T08:25:30.850 回答
1

您必须将闭包包裹在()

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

编译为

[1, 2, 3].reduce(function(a, b){
  return a + b;
}, 0);
于 2015-12-07T17:40:19.007 回答
0

只是为了补充另一个答案,LiveScript 提供了二进制运算,只需在运算符周围加上括号。

[1 2 3].reduce (+), 0
于 2015-12-08T17:34:27.013 回答