我的代码循环;在每个循环中,我需要使用一个数组,删除部分或全部值,然后将数组重置为其原始状态,然后继续下一个循环。例:
$myArray[5] = [1, 2, 3, 4, 5]
_ArrayDelete($myArray, $i) ; Delete at the specified index
此循环运行后,我需要再次设置$myArray[5] = [1, 2, 3, 4, 5]
。有没有另一种方法可以做到这一点(不使用_ArrayAdd()
(?
您可以使 arrayDelete 函数返回数组的更改副本,而不是修改原始数组本身。完成此操作后,您可以使用如下所示的内容:
$tempArray = arrayDelete($myArray, $i);
// do stuff with $tempArray
// $myArray is not changed
这在您的情况下是否可能,或者如何在 arrayDelete 中实现这一点,如果没有更多信息,就不可能说。
避免redim惩罚,只需提取您需要的内容
#include<array.au3>
local $myArray[5] = [1, 2, 3, 4, 5]
for $i = 0 to 4
_ArrayDisplay(_ArrayExtract($myArray , $i))
If $i = 4 Then $i = -1
next
在函数中使用变量的局部范围:
#include <array.au3>
Global $myArray[5] = [1, 2, 3, 4, 5]
For $i = 1 To 1000
cycle($myArray)
Next
Func cycle($myArray) ; $myArray is a local copy inside the function
_ArrayDisplay($myArray) ; to prove, it's the original
_ArrayDelete($myArray,2) ; delete something
_ArrayDisplay($myArray) ; to prove, it's altered
EndFunc ;==>cycle
这就是我的建议:使用(本地(副本。