Приветствую!
Не совсем понимаю синтаксис и механизм работы с массивами в autoit.
Конкретный вопрос: Хочу хранить несколько списков процессов получаемых ProcessList()
Хотел сделать вот так:
Т.е. по моей задумке, $aProcessLists будет 3-мерным массивом, элементами которого становятся 2-мерные массивы, возвращаемые ProcessList()
Однако, на попытку прочитать $aProcessLists[0][0][0] AutoIt ругается:
"Array variable has incorrect number of subscripts or subscript dimension range exceeded."
Почему?
Я не могу записать содержимое массива в качестве элемента массива? А как быть?
Делать присваивание поэлементно с помощью 2 вложенных циклов? Будет медленно и громоздко.
Может быть, есть какой-то синтаксический трюк?
2-й вопрос, про механизм работы: если я присваиваю результат выполнения функции, являющийся массивом некой переменной, происходит копирование данных или присваивание ссылки?
3-й вопрос, в какой момент произойдет освобождение памяти от данных массива?
Допустим, код:
Правильно ли я понимаю:
1. Когда переменная aProcessList заканчивает свою жизнь, т.е. при завершении функции, в которой она была локальной, происходит фактическое удаление данных, которые в нее писались?
2. Когда переменной происходит присваивание, а в ней уже что-то было, это "что-то" удаляется, память освобождается?
Не совсем понимаю синтаксис и механизм работы с массивами в autoit.
Конкретный вопрос: Хочу хранить несколько списков процессов получаемых ProcessList()
Хотел сделать вот так:
Код:
Global $aProcessLists[10]
$aProcessLists[0]=ProcessList()
Sleep(1000)
$aProcessLists[1]=ProcessList()
; и т.д...
Т.е. по моей задумке, $aProcessLists будет 3-мерным массивом, элементами которого становятся 2-мерные массивы, возвращаемые ProcessList()
Однако, на попытку прочитать $aProcessLists[0][0][0] AutoIt ругается:
"Array variable has incorrect number of subscripts or subscript dimension range exceeded."
Почему?
Я не могу записать содержимое массива в качестве элемента массива? А как быть?
Делать присваивание поэлементно с помощью 2 вложенных циклов? Будет медленно и громоздко.
Может быть, есть какой-то синтаксический трюк?
2-й вопрос, про механизм работы: если я присваиваю результат выполнения функции, являющийся массивом некой переменной, происходит копирование данных или присваивание ссылки?
3-й вопрос, в какой момент произойдет освобождение памяти от данных массива?
Допустим, код:
Код:
Func TestProcessList()
Local $aProcessList
$aProcessList=ProcessList()
Sleep(1000)
$aProcessList=ProcessList()
EndFunc
Правильно ли я понимаю:
1. Когда переменная aProcessList заканчивает свою жизнь, т.е. при завершении функции, в которой она была локальной, происходит фактическое удаление данных, которые в нее писались?
2. Когда переменной происходит присваивание, а в ней уже что-то было, это "что-то" удаляется, память освобождается?