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

How do I use the contents of an array as a variable name?

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

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"

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

刚刚弄明白了。

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

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

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

less restrictions on keys个变量名。

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


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

msgbox %blah% ; outputs "boo"