我的问题是这个问题的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);
}
有什么方法可以做评论建议的内容吗?
答案 0 :(得分:10)
通过执行Function对象本身是可能的。调用apply()就可以了:
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()
答案 1 :(得分:1)
编译器很难猜出你想要什么,你想传递一个Array类型的参数,或者你想传递那个数组的元素。编译器采用假设一。
答案 2 :(得分: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();
希望它有所帮助, 罗布