吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2109|回复: 4
上一主题 下一主题
收起左侧

[其他原创] [AutoHotKey]艰难自学之:数组练习

[复制链接]
跳转到指定楼层
楼主
laozhhaiJohn 发表于 2021-3-19 14:40 回帖奖励
本帖最后由 laozhhaiJohn 于 2021-3-19 15:42 编辑

[AutoHotKey]艰难自学之:数组练习


一、前言:
    AutoHotKey之所以学的艰难,一是因为小众,导致用的人少,交流困难;资料少,学习困难。二是因为它是英文软件,官方的资料大多都是英文的,对于我们还有一层学习障碍;同时由于第一个小众原因,国内相应的翻译资料也少。三是同类的国内某些软件抢占了市场,用户相对较多;同时,很多用户使用易语言和易的插件,也能完成一些AutoHotKey的任务。四是AutoHotKey自身语言设计上的随性,语言设定对程序员而言太自由,反而成为初学者的噩梦。五是AutoHotKey的官方帮助文件比较粗略不详,又没有权威和详细教程,导致学起来很困难,需要用户一次次的实验从而避雷跳坑。


二、吐槽帮助手册:
    闲话少说,这次说说AutoHotKey的数组问题。
    众所周知,数组是每一种编程语言的重要组成部分。对数组的熟练使用也是提高编程效率的方法之一。
    AutoHotKey的帮助中提到的伪数组官方不推荐使用,除非在特定命令和情况下。因此在此不予学习。
    因此AutoHotKey的数组在帮助中分为简单数组、关联数组。本来二者在学习时候如果写清楚,也好学习,但是二者在帮助手册中又都和编程中对象的教程混杂在一起,众所周知,对象的概念抽象不好理解且内容丰富,往往是学习难点,AutoHotKey手册这样编写,就导致初学者对数组的使用还没弄清,又加上对象的描述,对初学者而言及其不友好。
 由于结合了对象概念,因此数组其实在AutoHotKey中实际是又分为了线性数组和非线性数组.其中,线性数组就是在经典编程软件中使用的数组,即指针或索引号为0到N一一对应一个元素值.在AutoHotKey中是从1到N对应元素.非线性数组其实就是AutoHotKey中的对象,它安装对象的标准来操作数组。因为对象的复杂性,因此给初学者很大的困扰。

三、学习目标:
  学会在编程中使用数组,首先是一维数组,用户无非就是统一存一组数据到数组、单个存一个数据到数组、插入删除修改数组数据、从数组中取一个或全部数据。这几个用法写明白了,用户基本就能学会了。
  然后二维数组同上。二维以上数组暂且不讨论。


四、学习简单数组:
简单数组使用方括号表示。
获取数组中的元素,需要通过索引或者说指针,AutoHotKey与其他程序不同的是索引或指针是从 1 开始的.


[C] 纯文本查看 复制代码
;数组练习例子
zAb := []  ;创建数组
test(zAb)  ;用自定义函数查看数组情况
zAb[1]:= "手工输入第1行。"  ;增加元素
zAb[3]:= "输入标号为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[3] ;查看下数组第三个元素内容


;;;;;下面学习数组:单独手工存2个数据到数组
zAb.Push("倒数第二行","倒数第一行")  ;追加2个元素到数组
test(zAb)  ;用自定义函数查看数组情况
数组元素数1:= zAb.Count()
MsgBox, % zAb[zAb.Count()]  ;显示数组最后一个元素,看是否显示"倒数第一行"


;;;;;下面学习数组:单独手工插入到数组中一个元素数据
zAb.InsertAt(7, "插入的第7行")
test(zAb) ;用自定义函数查看数组情况,注意看数组元素个数增加了1个且没有覆盖原有的第7行内容
数组元素数2:= zAb.Count()

;;;;;下面学习数组:手工修改某个元素数据
zAb[8]:= "上面1行是插入的第7行,这是手工更改的第8行内容。"
MsgBox, % zAb[8]     ;查看内容
test(zAb)  ;用自定义函数查看数组情况
数组元素数3:= zAb.Count()

Loop  % 数组元素数3
        {
        MsgBox % "元素 " . A_Index . " 值是 " . zAb[A_Index]
        }
Return

/*┌***************** 函 数 信 息 ************************** 
*|| 说明: 用于对一个数组的元素个数、数组长度、大小标统计
*/
test(一个数组)
{
        计数Count := 一个数组.Count()
        长度Length := 一个数组.Length()
        最小指针MinIndex := 一个数组.MinIndex()
        最大指针MaxIndex := 一个数组.MaxIndex()
        Return
}




五、学习关联数组:
下一期再继续。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
hqingh21 发表于 2021-3-20 07:14
为什么不用AUTOIT,这两个之间有什么优缺点
3#
 楼主| laozhhaiJohn 发表于 2021-3-20 07:41 |楼主
hqingh21 发表于 2021-3-20 07:14
为什么不用AUTOIT,这两个之间有什么优缺点

呃,对autoit具体情况没有深入研究,不清楚它的情况。学之前看了一些介绍文章后选择的autohotkey。二者功能大体相同且autoit是源头,ahk是另立门户。
4#
_小白 发表于 2021-3-20 09:57
5#
 楼主| laozhhaiJohn 发表于 2021-3-20 17:25 |楼主
_小白 发表于 2021-3-20 09:57
中文文档可以看看wyagd001的

感谢介绍!我知道这个中文手册docs地址。非常感谢有这些热心大佬的翻译。
https://wyagd001.github.io/zh-cn/docs/AutoHotkey.htm
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-4 21:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表