【问题标题】:passing anonymous functions as parameters in livescript在livescript中将匿名函数作为参数传递
【发布时间】:2015-12-07 17:35:12
【问题描述】:

在 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?似乎第一个函数覆盖了任何传递额外参数以减少的能力。

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

【问题讨论】:

    标签: javascript livescript


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        你必须将闭包包裹在()

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

        编译为

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-11-23
            • 2011-05-11
            • 1970-01-01
            • 2012-09-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多