有没有办法可以用这种方式在字典中创建数组(不先创建变量):
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
答案 0 :(得分:0)
除了使用返回数组的函数之外,没有办法在字典对象中创建数组(StringSplit是一种常见的选择)。
像这样传递字典项ByRef很有意思。
因为你必须将它括在括号中(如($dict.Item("foo"))
),它会计算表达式,所以你传递的内容实际上并不是一个引用。没有理由在理论上没有这些括号的情况下你无法通过它,但是AutoIt还没有那个功能(而且从Jon过去所说的,更新COM接口代码是一场噩梦)。
解决方案是升级到最新的测试版并使用地图,这是一个像AutoIt内置的字典集。
或者,你必须使用3行,创建一个临时数组,然后在添加:
后重新分配它Local $a = $dict.Item("foo")
_ArrayAdd($a, "world")
$dict.Item("foo") = $a