[教程]AutoHotKey系列教程中级教程第三节第四课:多维数组

不断学习、不断创新、用代码创造自己的世界!——河许人

 

我们生活在三维世界,很难理解二维世界和四维世界的生活是什么样子的,数学作为偷窥多维世界的门径,向我们传达了很多玄奥的信息,不过数学嘛太抽象,某种意义上看,程序是将数学具象化的过程,也能让我们具体了理解了一下多维的一般,来吧!让我们一起领略一下多维世界的芬芳吧!!

AutoHotkey有两种方法实现多维数组,第一种通过伪数组实现,第二种就是通过数组嵌套的方式,第一种方式呢,我们在以前的课程中已经讲解过了,这里再简单举一个例子:

多维%1%%2%:=1

这种多维数组本质上还是离散的变量。

另一种方式就是通过数组的嵌套来实现,也是本次课的重点,嵌套其实是很容易理解的来张图大家估计一下子都明白了:

A:=[1,2,3]

B:=[1,1.3,1.4]
假如把B嵌套到A中,是不是数组B就变成A的一个数了,这是就相当于
A[1][2]:=1.3
当然还有另外一种表达形式
A[1,2]:=1.3
嘛区别呢?如果A[1]不存在,A[1][2]A[1,2]在两个方面有区别:
A[1][2]失败而A[1,2]会自动创建一个对象并把它存储到A[1]中.
  • 如果A[1][2]base定义了元函数,可以用如下方式调用它们:
    A.base.__Get(A, 1)[2] := content ;A[x][y]
    A.base.__Set(A, 1, 2, content) ; A[x,y]

因此,A[x,y]可以让对象为全面赋值定义定制的行为。

类似 A[a, b, c, d] := value 这样的多维赋值按以下方式处理:

  • 如果仅剩一个键,则执行赋值操作并返回。在其他情况时:
  • 在对象中查找列表中的首个键。
  • 如果找到非对象值,则失败。
  • 如果没有找到对象,则创建一个并保存。
  • 重复调用子对象,从顶部开始把剩下的键和值传递过去。

哈哈,其实能理解二维数组就好,高维数组不是很好理解。那我们试想复杂的对象能不能嵌套呢,答案当然是可以的,但是理解起来就更加抽象复杂,这节课不做过多的解释了,有实力的朋友可以自己探索一下。这种行为仅适用于由脚本创建的对象, 而不适合特殊的对象类型例如 COM 对象或 COM 数组.

 

 

给TA捐赠
共{{data.count}}人
人已捐赠
其他教程

对象的扩展应用之多维数组

2016-11-19 4:30:26

其他应用

[游戏][LOL]LOL瑞文光速QA。游戏中A设置自动攻击最近目标。具体忘了。

2016-11-19 13:51:56

5 条回复 A文章作者 M管理员
  1. 铭青

    不够A币购买 ➡

个人中心
购物车
优惠劵
有新私信 私信列表
搜索