pass ... rest к вызову NetConnection - PullRequest
3 голосов
/ 08 июня 2010

Я хочу передать отдых в вызове сетевого соединения, что-то вроде этого:

public function requestData(service : String, ...params) : void
{
 nc.call(service, params);
}

это не работает, так как вызов ожидает, что каждый параметр будет разделен запятыми, например:

nc.call(service, params[0], params[1], params[2]);

Я прочитал несколько сообщений о применении, но я не могу найти решение для этого конкретного случая.

1 Ответ

3 голосов
/ 09 июня 2010

Попробуйте это:

public function requestData(service : String, ...params) : void
{
    var applyArgs:Array = params && params.length > 0 
                            ? [service].concat(params) 
                            : [service];
    nc.call.apply(nc,applyArgs);    
}

Я не тестировал этот конкретный фрагмент кода, но поскольку второй аргумент, который принимает Function :: apply, - это массив, который будет преобразован в список параметров, это должно сработать (если только я не сделал глупую ошибку ... нет никакой помощи компилятора в SO!).

В основном, массив applyArgs всегда будет содержать service в своей первой позиции. Если есть дополнительные параметры, они будут соединены с этим массивом: результат - то, что вы передаете для применения.

...