我想在netconnection调用中传递一个rest,如下所示:
public function requestData(service : String, ...params) : void
{
nc.call(service, params);
}这不起作用,因为调用要求每个参数用逗号分隔,例如:
nc.call(service, params[0], params[1], params[2]);我读过一些关于apply的文章,但我找不到针对这个特定情况的解决方案。
发布于 2010-06-09 09:17:46
试试这个:
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。如果有更多额外的参数,它们将被连接到这个数组:结果就是您传递应用的结果。
https://stackoverflow.com/questions/2999888
复制相似问题