【发布时间】:2015-12-14 07:42:59
【问题描述】:
我正在构建一个奥赛罗 AI,但遇到了一个奇怪的 AS2 问题。
通过将初始数组(arr_nums) 传递给它来设置一个临时数组(arr_temp) 等于函数的返回(timesTen();)。
为什么它也会改变初始数组?
我能找到重现问题的最简单方法:
arr_nums = [0,1,2,3,4,5,6,7,8,9,10];
timesTen = function(deltaArr){
for(i = 0; i < deltaArr.length; i ++){
deltaArr[i] *= 10;
}
return(deltaArr);
}
test = function(){
arr_temp = timesTen(arr_nums);
trace('temp: ' + arr_temp);
trace('nums: ' + arr_nums);
}
test();
以上代码将跟踪以下内容:
temp: 0,10,20,30,40,50,60,70,80,90,100
nums: 0,10,20,30,40,50,60,70,80,90,100
首选跟踪:
temp: 0,10,20,30,40,50,60,70,80,90,100
nums: 0,1,2,3,4,5,6,7,8,9,10
即使我没有通过 arr_nums 并如下更改测试,它也会生成相同的输出:
test = function(){
arr_temp = arr_nums;
arr_temp = timesTen(arr_temp);
trace('arr_temp: ' + arr_temp);
trace('arr_nums: ' + arr_nums);
}
现在已经拼命尝试、测试和搜索 2 天,但仍然不知道出了什么问题以及如何解决?
非常感谢任何想法!
【问题讨论】:
-
你在某处声明你的变量吗?我没有看到任何“var”
-
在第 1 行和第 13 行,我使用了惰性方法“array = [0,1,2...];”而不是“var arr_nums:Array = [0,1,2...];”。为您简化代码。
标签: arrays loops return actionscript-2 trace