我目前面临一个奇怪的问题,我无法找到原因。我正在尝试在AutoIt中创建一个多维数组并使用值初始化它。记住变体数据类型,应该可以创建一个数组
所以基本上我想要一个键/值对数组,其中值是一个数字数组。我知道在这种情况下,“值”被视为一个简单的变量,而不是一个可直接访问的数组 - 这就是我想要的。
但是,如果我尝试
Global Const $x[3][2] = [ _
[1, [11,12,13,14] ], _
[2, [21,22,23,24] ], _
[3, [31,32,33,34] ] _
]
我得到了
error: syntax error
[1, [
~~~~^
error: syntax error
[2, [
~~~~^
error: syntax error
[3, [
~~~~^
要么我缺少某些内容,要么初始化程序没有意识到我不想要3个维度而只是2个并将4个项目数组作为单个变量处理。
有人可以建议首选解决方案吗?或者我应该忘记这个组合解决方案,简单地使用每个包含5个元素的数组,例如
Global Const $x[3][5] = [ _
[1, 11,12,13,14 ], _
[2, 21,22,23,24 ], _
[3, 31,32,33,34 ] _
]
并处理代码中的差异?
答案 0 :(得分:1)
我认为这是不可能的。你可以得到这个:
#region ;************ Includes ************
#include <Array.au3>
#endregion ;************ Includes ************
Global $a[4] = [11, 12, 13, 14]
Global Const $x[3][2] = [ _
[1, $a], _
[2, "21,22,23,24"], _
[3, "31,32,33,34"] _
]
_ArrayDisplay($x)
; Getting the values of [0][1]
For $i = 0 To UBound($a) - 1
ConsoleWrite($a[$i] & @CR)
Next
$re = StringSplit($x[1][1], ',', 2)
For $i = 0 To UBound($re) - 1
ConsoleWrite($re[$i] & @CR)
Next
答案 1 :(得分:1)
这是可能的,但您需要单独初始化内部数组。
Global $arr[3][2]
Global $a1[4] = [11,12,13,14] ;these are the inner arrays
Global $a2[4] = [21,22,23,24]
Global $a3[4] = [31,32,33,34]
$arr[0][0] = 1
$arr[0][1] = $a1 ;put the inner arrays into the outer array
$arr[1][0] = 2
$arr[1][1] = $a2
$arr[2][0] = 3
$arr[2][1] = $a3
Global $arrTemp
For $i = 0 to UBound($arr)-1
$arrTemp = $arr[$i][1]
For $j = 0 To UBound($arrTemp)-1
ConsoleWrite($arr[$i][0] & ': ' & $arrTemp[$j] & @CRLF)
Next
Next
这将输出:
1: 11
1: 12
1: 13
1: 14
2: 21
2: 22
2: 23
2: 24
3: 31
3: 32
3: 33
3: 34