2011-03-10 163 views
3

我的问题是这个问题的Flex的换位:传递参数

Can I pass an array as arguments to a method with variable arguments in Java?

也就是说,我有一些ActionScript代码数组我需要将数组中索引的每个对象都传递给方法method(...arguments)

一些代码,使其明确:

private function mainMethod():void{ 
    var myArray:Array = new Array("1", "2", "3"); 
    // Call calledMethod and give it "1", "2" and "3" as arguments 
} 

private function calledMethod(...arguments):void{ 
    for each (argument:Object in arguments) 
     trace(argument); 
} 

是否有某种方式做意见建议是什么?

回答

10

通过检查Function对象本身是可能的。调用应用()就可以将工作:

private function mainMethod():void 
{ 
    var myArray:Array = new Array("1", "2", "3"); 

    // call calledMethod() and pass each object in myArray individually 
    // and not as an array 
    calledMethod.apply(this, myArray); 
} 

private function calledMethod(... args):void 
{ 
    trace(args.length); // traces 3 
} 

欲了解更多信息,请http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Function.html#apply()

+0

这是完美的,谢谢! – Dunaril

+0

美丽!几天前,我自己也有这个确切的问题。 –

1

编译器很难猜出你想要什么,你想传递一个Array类型的参数还是要传递该数组的元素。编译器采用假设一。

+0

请问有没有办法来规避呢? – Dunaril

0

的参数... args是一个对象的方法等待的。您可以传递多个元素或(在这种情况下)一个数组与参数。

例子:

function mainMethod():void 
{ 
    //Passing parameters as one object 
    calledMethod([1, 2, 3]); 

    //Passing parameters separately 
    calledMethod(1, 2, 3); 
} 

function calledMethod(...args):void 
{ 
    for each (var argument in args) 
    { 
     trace(argument); 
    } 
} 

mainMethod(); 

希望它能帮助, 罗布

+0

对不起,但它没有帮助。我的问题特别解决了向数组中包含的对象传递这种方法的问题。这意味着你不能在方法调用中显式的使用这些对象。 – Dunaril

+0

我的不好,对不起:) – robertp