【问题标题】:ActionScript 3: How do curry functions work?ActionScript 3:curry 函数如何工作?
【发布时间】:2018-12-03 15:15:34
【问题描述】:

我最近才开始研究 ActionScript 代码(例如,我昨天才真正发现 ActionScript 是一个东西)。我唯一的经验是使用 Java,所以我不知道这段代码是如何工作的:

public static function curry(func:Function,...args):Function
{
    return function (...args2):*{
        return func.apply(null,args.concat(args2));
    };
}

我不明白星号在做什么,...args2 来自哪里(或它是什么),或者如何在 return 语句中包含 return 语句。等效的 Java 代码是什么? (即使比较复杂,我也能理解的好很多。)

【问题讨论】:

    标签: function actionscript currying


    【解决方案1】:

    ActionScript 与 JavaScript 有许多相似之处 - 但也提供了一个静态类型系统,因为它在 Java 中使用。 Java 缺乏的是对高阶函数的支持。函数,接受函数作为参数或返回函数或两者兼有。

    curry 接受 Function 类型的参数和任意数量的附加参数(... 其余参数)。它返回一个Function,它也接受任意数量的参数。当这个函数被调用时,所有的参数都被连接起来并应用于初始函数。

    // pseudo code
    const f:Function = curry(function(o):* { o.join(', '); }, 1, 2, 3);
    const result:* = f(4, 5, 6);
    trace(result); // [1, 2, 3, 4, 5, 6]
    

    在 Java 中,将使用内部类或 Java 8 引入的 lambda 表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 2011-04-29
      • 2015-09-03
      • 2015-06-19
      • 2016-03-16
      相关资源
      最近更新 更多