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