如何使用数组的内容作为变量名?
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"]
globalWrapper(NameOfTheGlobalVar, LocalVar) {
global
%NameOfTheGlobalVar% := LocalVar
}
Test := {asdf: "blah"}
globalWrapper(Test["asdf"], "boo")
msgbox %blah% ; outputs "boo"
目前我将数组的内容存储到一个变量中,然后使用两个 % 设置该变量并存储一个值。我当前的代码如下所示:
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"]
globalWrapper(NameOfTheGlobalVar, LocalVar) {
global
%NameOfTheGlobalVar% := LocalVar
}
Test := {asdf: "blah"}
globalWrapper(Test["asdf"], "boo")
msgbox %blah% ; outputs "boo"