如何将数组的内容用作变量名?

时间:2015-11-20 06:26:10

标签: autohotkey

目前,我将数组的内容存储到变量中,然后使用2%设置该变量并存储一个值。我目前的代码如下:

Test := {asdf: "blah"}
Temp := Test["asdf"]
%Temp% := "boo"
; above line is be the same as blah := "boo", but blah came from a variable
msgbox %blah% ; outputs "boo"

我不喜欢像这样使用Temp变量。

以下编译但blah保持空白:

(Test["asdf"]) := "boo"
%Test%["asdf"] := "boo"

以下给出了编译错误:

%(Test["asdf"])% := "boo"

我有一个模糊的想法,它应该是可能的,但我找不到它的语法。如何直接使用数组而不必将其放入临时变量?

2 个答案:

答案 0 :(得分:1)

刚想通了。

这里的问题是使用动态数据创建变量可能会导致创建无效的变量名称。各种搞砸的方式(空格,UTF-8代码等)。

一种更安全的方法是使用关联数组:

Output := Object()
Test := {asdf: "blah"}
Output[(Test["asdf"])] := "boo"
msgbox % Output["blah"]

less restrictions on keys而不是变量名。

答案 1 :(得分:0)

globalWrapper(NameOfTheGlobalVar, LocalVar) {
    global
    %NameOfTheGlobalVar% := LocalVar
}


Test := {asdf: "blah"}
globalWrapper(Test["asdf"], "boo")

msgbox %blah% ; outputs "boo"