ActionScript 3: Как работают функции карри? - PullRequest
0 голосов
/ 25 июня 2018

Я только недавно начал смотреть на код ActionScript (например, я буквально только что узнал, что ActionScript был вчерашним событием).Мой единственный опыт работы с Java, поэтому я понятия не имею, как работает этот код:

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

Я не понимаю, что делает звездочка, откуда ... откуда взялась args2 (или что это)или как вы можете иметь оператор возврата в операторе возврата.Каким будет эквивалентный Java-код?(Даже если это довольно запутанно, я, вероятно, смогу понять это намного лучше.)

1 Ответ

0 голосов
/ 09 июля 2018

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.

...