很多 AHK v1 新手写到一定程度后,会卡在对象和数组上:什么时候用伪数组,什么时候用对象,为什么 arr[1] 可以,为什么 obj.name 也可以。对象不是高级炫技,它是让脚本不乱的基础工具。
先给结论
- 一组按顺序的数据:用数组。
- 一组有名字的配置:用对象。
- 遍历对象或数组:用
for。 - 把函数当回调传递:再看函数对象和
ObjBindMethod()。 - 新项目尽量少用伪数组,优先用真正的对象。
数组:适合有顺序的数据
比如文件列表、任务列表、关键词列表,这些通常只关心第几个。
#Requires AutoHotkey v1.1
files := ["a.txt", "b.txt", "c.txt"]
for index, fileName in files {
MsgBox, % index ": " fileName
}
对象:适合有名字的数据
配置、用户信息、窗口信息这类数据,用对象会清楚很多。
user := {}
user.name := "张三"
user.age := 18
MsgBox, % user.name " / " user.age
把窗口信息放进对象
窗口控制脚本经常要同时保存标题、类名、进程名、句柄。如果都散在变量里,很快就不好维护。
win := {}
win.title := "无标题 - 记事本"
win.class := "Notepad"
win.query := "ahk_class " win.class
if WinExist(win.query)
WinActivate
For 遍历对象
for key, value in obj 是对象最常用的读法。它比手动维护一堆变量更适合批量处理。
config := {delay: 100, mode: "fast", log: true}
for key, value in config {
text .= key ": " value "`n"
}
MsgBox, % text
什么时候看函数对象
普通新手不用一开始就研究函数对象。等你需要回调、定时器绑定参数、GUI 事件分发、封装类库时,再看 Func()、ObjBindMethod() 会更自然。
站内延伸
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)