2014-12-24 2 views
1

Есть ли способ я могу создать массив внутри словаря таким образом (без создания переменного первого):Создание пустого массива внутри объекта Scripting.Dictionary с помощью AutoIt

Local $myDictionary = ObjCreate("Scripting.Dictionary") 
$myDictionary.Add("firstDictionary", ObjCreate("Scripting.Dictionary")) ;this is ok 
$myDictionary.Add("firstarray", []) ;this is wrong 

_ArrayAdd($myDictionary.Item("firstArray"), "first element in firstArray") 
_ArrayAdd($myDictionary.Item("firstArray"), "second element in firstArray") 

Это вызвало всплывающее окно с «Ошибкой в выражение " Должно ли это [] вернуть массив с пустым размером?

И по какой-то причине я не могу добавлять элементы, когда массив находится внутри словаря:

Local $newArray[1] 
Local $myDictionary = ObjCreate("Scripting.Dictionary") 

_ArrayAdd($newArray,101) ;this is ok 
$myDictionary.Add("firstArray", $newArray) 

;_ArrayAdd($myDictionary.Item("firstArray"), 102) ; this is wrong 
_ArrayAdd(($myDictionary.Item("firstArray")), 102) ; this does not change the dictionary array 
_ArrayDisplay(($myDictionary.Item("firstArray"))) ; this still shows 101 
+1

Для дальнейшего использования, это также предлагается на AutoIt форуме [здесь] (HTTP: // WWW .autoitscript.com/форум/тема/166397 создать пустой-массив-в-scriptingdictionary-объект /) – Matt

ответ

0

Там нет способа, чтобы создать массив в словаре объекта, за исключением того, с помощью функции, которая возвращает массив (StringSplit - общий выбор).

Передача словарного товара ByRef, как это интересно.

Поскольку вы должны заключить его в круглые скобки (например, ($dict.Item("foo"))), он оценивает выражение, поэтому то, что вы проходите, на самом деле не является ссылкой. Нет причин, по которым вы не можете передавать его без этих скобок в теории, но AutoIt еще не обладает этой функциональностью (и из того, что сказал Джон в прошлом, обновление кода COM-интерфейса - это кошмар).

Решения должны обновиться до последней версии бета-версии и использовать карты, которые представляют собой словарь, подобный коллекции, встроенной в AutoIt.

Кроме того, вы должны использовать 3 линии, создать временный массив, а затем передать его после добавления:

Смежные вопросы