Что нового

Массивы Доступ к элементу массива по цепочке имен

musicstashall

Знающий
Сообщения
322
Репутация
7
Доброго.
Народ, подскажите, как можно организовать чтение данных подобно следующей записи:
Код:
$oUser.Item1.Subitem2.data1 ; и так далее

Хотелось бы добираться до нужного значения по цепочке имен в массиве. Ассоциативный массив вроде не подходит, я не могу в нем создавать Subitem's.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
В AutoItObject вроде можно нечто похожее сделать, но зачем?
Можно как то так:
Код:
Global Enum $Item1, $Subitem2, $data1
Global $aUser[10][10][10]

$aUser[$Item1][$Subitem2][$data1] = 'Data'
ConsoleWrite($aUser[$Item1][$Subitem2][$data1]  & @CRLF)
 
Автор
M

musicstashall

Знающий
Сообщения
322
Репутация
7
Я тут, пока тему гуглил, обнаружил, что это актуальная тема, в AutoIt существенный недостаток. Я так понимаю, это связано с классами (не силен в программировании).
Для чего это надо: вот у меня получился такой массив, который содержит в себе другие массивы, и каждый дочерний массив еще содержит другой массив. Согласитесь, очень трудно читать такую запись:
Код:
If Not @error And IsArray(($RightsList[$i][2])[$index][1]) Then Return (($RightsList[$i][2])[$index][1])[2]

Было бы приятнее читать такую:
Код:
$oUser.Item1.Subitem2.data1

Прямо по имени обращаться к массиву и по имени читать значения. Так же, по имени, присваивать другие значения.
Видел эту тему, тут вроде костыль в DLL придумали. Не годится, лишние файлы подключать.

В общем я понял, что никак. Оставил в массивах.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
массив, который содержит в себе другие массивы, и каждый дочерний массив еще содержит другой массив.
Мне за всю мою историю кодинга на AutoIt, приходилось один, максимум два раза использовать массивы в массивах, и то, это для библиотеки.
Не годится, лишние файлы подключать.
Ну да, это сложно, тащить эти файлы за собой, они такие тяжёлые...

В общем я понял, что никак. Оставил в массивах.
Ну почему никак, при желании можно написать функции, чтобы обращаться проще к таким массивам.
Просто оно не стоит того.
 
Верх