[AutoHotKey]艰难自学之:数组练习
本帖最后由 laozhhaiJohn 于 2021-3-19 15:42 编辑艰难自学之:数组练习
一、前言:
AutoHotKey之所以学的艰难,一是因为小众,导致用的人少,交流困难;资料少,学习困难。二是因为它是英文软件,官方的资料大多都是英文的,对于我们还有一层学习障碍;同时由于第一个小众原因,国内相应的翻译资料也少。三是同类的国内某些软件抢占了市场,用户相对较多;同时,很多用户使用易语言和易的插件,也能完成一些AutoHotKey的任务。四是AutoHotKey自身语言设计上的随性,语言设定对程序员而言太自由,反而成为初学者的噩梦。五是AutoHotKey的官方帮助文件比较粗略不详,又没有权威和详细教程,导致学起来很困难,需要用户一次次的实验从而避雷跳坑。
二、吐槽帮助手册:
闲话少说,这次说说AutoHotKey的数组问题。
众所周知,数组是每一种编程语言的重要组成部分。对数组的熟练使用也是提高编程效率的方法之一。
AutoHotKey的帮助中提到的伪数组官方不推荐使用,除非在特定命令和情况下。因此在此不予学习。
因此AutoHotKey的数组在帮助中分为简单数组、关联数组。本来二者在学习时候如果写清楚,也好学习,但是二者在帮助手册中又都和编程中对象的教程混杂在一起,众所周知,对象的概念抽象不好理解且内容丰富,往往是学习难点,AutoHotKey手册这样编写,就导致初学者对数组的使用还没弄清,又加上对象的描述,对初学者而言及其不友好。
由于结合了对象概念,因此数组其实在AutoHotKey中实际是又分为了线性数组和非线性数组.其中,线性数组就是在经典编程软件中使用的数组,即指针或索引号为0到N一一对应一个元素值.在AutoHotKey中是从1到N对应元素.非线性数组其实就是AutoHotKey中的对象,它安装对象的标准来操作数组。因为对象的复杂性,因此给初学者很大的困扰。
三、学习目标:
学会在编程中使用数组,首先是一维数组,用户无非就是统一存一组数据到数组、单个存一个数据到数组、插入删除修改数组数据、从数组中取一个或全部数据。这几个用法写明白了,用户基本就能学会了。
然后二维数组同上。二维以上数组暂且不讨论。
四、学习简单数组:
简单数组使用方括号表示。
获取数组中的元素,需要通过索引或者说指针,AutoHotKey与其他程序不同的是索引或指针是从 1 开始的.
;数组练习例子
zAb := [];创建数组
test(zAb);用自定义函数查看数组情况
zAb:= "手工输入第1行。";增加元素
zAb:= "输入标号为3的元素但不知道是第几行?";不按顺序来的标号也可使用
zAb.Push("增加一个现在的最后1行!");追加1个元素到数组
test(zAb);用自定义函数查看数组情况,这时候数组长度为4,计数的元素个数是3个.
;;;;;下面学习数组值的批量存入1,手工批量写入
zAb1 := ["游泳","慢跑","足球"];插件另一个数组同时赋值一些元素
test(zAb1);用自定义函数查看数组情况
;;;;;下面学习数组值的批量存入2,程序批量写入
数组元素数 := 0
Run, C:\Windows\System32\drivers\gmreadme.txt;打开一个文本文件对照看
Loop, Read, C:\Windows\System32\drivers\gmreadme.txt
{
数组元素数 := 数组元素数 + 1 ;变量加1
zAb[数组元素数] := A_LoopReadLine ;读每一行并存入到数组,注意看,原来的元素值被改变
}
test(zAb);用自定义函数查看数组情况
数组元素数0:= zAb.Count()
MsgBox, % zAb ;查看下数组第三个元素内容
;;;;;下面学习数组:单独手工存2个数据到数组
zAb.Push("倒数第二行","倒数第一行");追加2个元素到数组
test(zAb);用自定义函数查看数组情况
数组元素数1:= zAb.Count()
MsgBox, % zAb;显示数组最后一个元素,看是否显示"倒数第一行"
;;;;;下面学习数组:单独手工插入到数组中一个元素数据
zAb.InsertAt(7, "插入的第7行")
test(zAb) ;用自定义函数查看数组情况,注意看数组元素个数增加了1个且没有覆盖原有的第7行内容
数组元素数2:= zAb.Count()
;;;;;下面学习数组:手工修改某个元素数据
zAb:= "上面1行是插入的第7行,这是手工更改的第8行内容。"
MsgBox, % zAb ;查看内容
test(zAb);用自定义函数查看数组情况
数组元素数3:= zAb.Count()
Loop% 数组元素数3
{
MsgBox % "元素 " . A_Index . " 值是 " . zAb
}
Return
/*┌***************** 函 数 信 息 **************************
*|| 说明: 用于对一个数组的元素个数、数组长度、大小标统计
*/
test(一个数组)
{
计数Count := 一个数组.Count()
长度Length := 一个数组.Length()
最小指针MinIndex := 一个数组.MinIndex()
最大指针MaxIndex := 一个数组.MaxIndex()
Return
}
五、学习关联数组:
下一期再继续。
为什么不用AUTOIT,这两个之间有什么优缺点 hqingh21 发表于 2021-3-20 07:14
为什么不用AUTOIT,这两个之间有什么优缺点
呃,对autoit具体情况没有深入研究,不清楚它的情况。学之前看了一些介绍文章后选择的autohotkey。二者功能大体相同且autoit是源头,ahk是另立门户。 中文文档可以看看wyagd001的 _小白 发表于 2021-3-20 09:57
中文文档可以看看wyagd001的
感谢介绍!我知道这个中文手册docs地址。非常感谢有这些热心大佬的翻译。
https://wyagd001.github.io/zh-cn/docs/AutoHotkey.htm
页:
[1]