ActionScript 3:咖喱函数如何工作?

时间:2018-06-25 05:30:16

标签: function actionscript curry

我最近才开始查看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代码是什么? (即使相当复杂,我也可能会更好地理解它。)

1 个答案:

答案 0 :(得分:0)

ActionScript与JavaScript具有许多相似之处-但也提供了Java中使用的静态类型系统。 Java缺少的是对高阶函数的支持。函数,可以将函数作为参数或返回函数,或两者兼有。

curry接受类型为Function的和参数以及任意数量的附加参数(... rest参数)。它返回一个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表达式。