Dictionary 自动热键|无法使用键从关联数组/字典中检索值

Dictionary 自动热键|无法使用键从关联数组/字典中检索值,dictionary,autohotkey,associative-array,Dictionary,Autohotkey,Associative Array,我正在尝试用AutoHotkey编写一个简短的程序,它将采用4位代码的第一个字符,将其存储在变量TypeChar中,然后在名为Type的关联数组/字典中查找匹配值,并将该值存储在变量RetrievedType中 我遇到的问题是,当消息框中文本“Type:”之后显示RetrievedType的值时,消息框仅显示预定文本,而不显示变量的值。我不知道出了什么问题,但在对其他字符串进行了一些测试之后,我相信这可能与字符被解释为整数而不是字符串有关。不过我真的不确定 到目前为止,我掌握的代码是: Typ

我正在尝试用AutoHotkey编写一个简短的程序,它将采用4位代码的第一个字符,将其存储在变量
TypeChar
中,然后在名为
Type
的关联数组/字典中查找匹配值,并将该值存储在变量
RetrievedType

我遇到的问题是,当消息框中文本“Type:”之后显示
RetrievedType
的值时,消息框仅显示预定文本,而不显示变量的值。我不知道出了什么问题,但在对其他字符串进行了一些测试之后,我相信这可能与字符被解释为整数而不是字符串有关。不过我真的不确定


到目前为止,我掌握的代码是:

Type := {"1":"Alpha",  "2":"Beta", "3":"Gamma", "9":"Delta"}

p::

Code := "2xxx"

TypeChar := SubStr(Headcode, 1, 1)
RetrievedType := Type[TypeChar]

MsgBox, 0, Info, Type: %RetrievedType%
Exit

哪个输出:



任何帮助或解决方案都将不胜感激,谢谢

显而易见的问题是,
Headcode
不存在,但我假设你在这里发布代码时这只是一个意外

真正的问题是您试图访问一个数字键,但是您的键是字符串。
这是一种v1限制/问题,但如果你做得正确,就不是真正的问题。
你可以阅读更多关于它的内容

因此,修复方法是强制转换为字符串,例如像这样
“2

(在AHK中并不存在铸造,但我认为这已经足够接近了)


是的,很抱歉,我不得不编辑掉脚本中对问题不有用的一些部分,并更改了一些变量的名称,一定是忘记了将
Headcode
更改为
code
。关于你的答案,它非常有效!非常感谢你的帮助!
Type := { "1": "Alpha"
        , "2": "Beta"
        ,  2 : "Beta2"
        , "3": "Gamma"
        , "9": "Delta" }

Code := "2xxx"

TypeChar := SubStr(Code, 1, 1)
RetrievedType1 := Type["" TypeChar]
RetrievedType2 := Type[TypeChar]

MsgBox, 0, Info, % "Type: " RetrievedType1 "`nType2: " RetrievedType2