自动热键 |无法使用键从 Associative Array/Dictionary 检索值

AutoHotkey | Cannot retrieve value from Associative Array/Dictionary using key

我正在尝试在 AutoHotkey 中编写一个短程序,它将获取 4 位代码的第一个字符,将其存储在变量 TypeChar 中,然后在关联 [=] 中查找匹配值32=] 调用了 Type 并将该值存储在变量 RetrievedType.

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


所以,我目前的代码是这样的:

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 limitation/issue,但如果你 做对了
就不是真正的问题 您可以阅读更多相关信息 here

所以解决方法是 cast 到字符串,例如像这样 "" 2.
(AHK 中不存在转换,但我认为这已经足够了)

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