【问题标题】:AutoHotkey | Cannot retrieve value from Associative Array/Dictionary using key自动热键 |无法使用键从关联数组/字典中检索值
【发布时间】:2020-12-12 20:34:40
【问题描述】:

我正在尝试在 AutoHotkey 中编写一个短程序,它将获取 4 位代码的第一个字符,将其存储在变量 TypeChar 中,然后在名为 @987654324 的关联数组/字典中查找匹配值@ 并将该值存储在变量 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

哪个输出这个:


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

【问题讨论】:

    标签: dictionary autohotkey associative-array


    【解决方案1】:

    嗯,显而易见的问题是 Headcode 不存在,但我会假设您在此处发布代码时这只是一个意外。

    真正的问题是您尝试访问数字键,但您的键是字符串。
    这是一种 v1 限制/问题,但如果您只是正确处理,则不是真正的问题。
    你可以阅读更多关于它的信息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
    

    【讨论】:

    • 是的,对不起,我不得不编辑掉脚本中对问题没有用的一些部分,并更改了一些变量的名称,一定忘记将 Headcode 更改为 just Code.
    • 关于你的回答,它很好用!非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    相关资源
    最近更新 更多