默认情况下,ActionScript 3 通过引用传递数组。我一定是犯了一个菜鸟的错误。这是我的代码的快照:
private function testFunc():void {
var testArray:Array=new Array();
myFunction(testArray);
trace(testArray); // []; length=0
}
private function myFunction(tArray:Array):void {
tArray = myOtherFunction();
trace(tArray); // 0, 1, 2; length=3
}
private function myOtherFunction():Array {
var x:Array=new Array;
for (var i:int=0; i<3; i++)
x[i]=i;
return x;
}
我可以看到这tArray
是正确的,但testArray
总是空的。知道如何使testArray
平等tArray
吗?提前致谢。
http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000049.html
更新:
对于它的价值,我发现以下更改(hack)有效:
private function myFunction(tArray:Array):void {
var Z:Array=new Array;
Z = myOtherFunction();
for (var i:int=0; i<Z.length; i++)
tArray[i]=Z[i];
}
Georgii 的解决方案是更好的设计。