相关疑难解决方法(0)

用数组填充(... rest)参数?

一些as3函数通过使用约定允许任意数量的参数来处理重载:

public function doSomething( ... rest ):void;
Run Code Online (Sandbox Code Playgroud)

我处于这样一种情况,我需要将数组的所有值(任意长度)传递给这种类型的函数...我不知道如何做到这一点.建议?

这是一个黑客解决方案,但它不可扩展:

switch (args.length) {
case 0: doSomething(); break;
case 1: doSomething(args[0]); break;
case 2: doSomething(args[0], args[1]); break;}
Run Code Online (Sandbox Code Playgroud)

apache-flex flash actionscript actionscript-3

9
推荐指数
1
解决办法
2132
查看次数

AS3论点

为什么你认为下面的代码不起作用?你会改变/添加什么使它工作?

任何帮助表示赞赏..

function TraceIt(message:String, num:int)
{
    trace(message, num);
}

function aa(f:Function, ...args):void
{
    bb(f, args);
}

aa(TraceIt, "test", 1);

var func:Function = null;
var argum:Array = null;

function bb(f:Function, ...args):void
{
    func = f;
    argum = args;
    exec();
}

function exec()
{
    func.apply(null, argum);
}
Run Code Online (Sandbox Code Playgroud)

我得到一个ArgumentError(错误#1063):

Argument count mismatch on test_fla::MainTimeline/TraceIt(). Expected 2, got 1.
Run Code Online (Sandbox Code Playgroud)

..因此,传递的参数(argum)无法提供所有传递的参数.

..请保持功能结构(流量)完整.我需要一个使用相同函数的解决方案.我必须将args传递给变量并在上面的exec()方法中使用它们.

问候

arguments function actionscript-3

2
推荐指数
1
解决办法
7431
查看次数