如何在AutoHotkey函数中基于变量动态修改指定全局变量?
如何在AutoHotkey函数内动态修改全局变量
可以实现你的需求,你遇到的错误是因为global指令仅支持指定固定变量名,不能直接使用带百分号的动态变量表达式(比如Counter_%key%)。下面提供两种可行的解决方案:
方案一:使用关联数组(推荐)
用关联数组(对象)存储按键计数器,无需动态命名变量,通过键名直接对应按键,代码更简洁易维护:
keylist = 1234567890qwertzuiopasdfghjklyxcvbnmäüöß,.- ; 初始化关联数组作为计数器容器 Counter := {} Loop, parse, keylist { Counter[A_LoopField] := 0 } MyFunction(key){ global Counter ; 声明全局对象 Counter[key] += 1 ; 直接通过键名修改对应计数 }
方案二:使用动态变量名访问
如果坚持要使用Counter_按键名格式的变量,可以通过表达式方式访问全局变量,无需在global中指定动态变量名:
keylist = 1234567890qwertzuiopasdfghjklyxcvbnmäüöß,.- Loop, parse, keylist { Counter_%A_LoopField% := 0 } MyFunction(key){ ; 构造目标变量名 targetVar := "Counter_" key ; 通过表达式方式修改全局变量 %targetVar% += 1 }
也可以在函数开头添加无参数的global指令,让函数内所有未声明为局部的变量默认使用全局作用域:
MyFunction(key){ global Counter_%key% += 1 }
内容的提问来源于stack exchange,提问作者dasWesen
相关产品推荐
相关产品推荐

