AutoHotKey的那些事儿:(二)、AutoHotkey变量、函数、数组、类的使用

AutoHotKey是一种自动化脚本热键语言,可以用于自动化测试,点击等操作,可以进行捕捉回放,下面对其重要的部分进行介绍。

 

1变量

变量赋值有两种方法:1)用  := 进行赋值,推荐这种, 2)用 = 进行赋值,右侧需要用百分号 获得变量内容

表达式方法使用冒号-等号运算符 (:=)来存储数字、引用的字符串和其他类型的表达式。下面的例子在功能上与上面的例子相同:

MyNumber := 123
CopyOfVar := Var ;和上面的部分里与它相似的那个不同,百分号不和 := 运算符一起使用

CopyOfVar = %Var% ;和 = 运算符一起用时,需要使用百分号来获得变量的内容。

 

2函数

1)形参是非引用类型的

例如

Add(x, y)
{
return x + y ; "Return" 需要一个表达式。
}

 

2)形参是引用类型,则在形参前面加上ByRef

例如

Swap(ByRef Left, ByRef Right)
{
temp := Left
Left := Right
Right := temp
}

 

3类

用 __New()函数进行初始化,类似于C++,Java的构造函数,调函类中其他函数需要用this,

例如:

productionPath := this.getProductionPath(productionDir)

例如

class AutoClick
{
 __New(conf)
 {
  this.conf := conf
  verticalLine := "|"
  x := this.conf.snapX
  y := this.conf.snapY
  w := this.conf.snapWidth
  h := this.conf.snapHeight
  this.snapType := x . verticalLine . y . verticalLine . w . verticalLine . h
  this.picSuffix := ".png"
 }

 handle()

 {

   .......

  }

}

实例化和调用形式如下:

autoClick := AutoClick(conf)

autoClick.handle()

 

4结构体

与C++一样,可以认为类也是一种结构体

例如:

class Point
{
    __New(x,y)
    {
        this.x := x  ;x坐标
        this.y := y  ;y坐标
    }
}

实例化这个结构体/类:

point := new Point(x,y)

 

 

5数组

数组用Array()进行初始化

例如:animationArr := Array()

数组插入元素:用Insert方法

例如:animationArr.Insert(point)

删除元素:用Remove(),会返回当前删除的元素值,并且删除下标的元素后,被删除下标元素之后的元素会整体向数组前面移动

removeValue := animationArr.Remove(2)

遍历数组:用 for i , value in animationArr 的形式

例如:

    for i , value in animationArr
    {
     MouseClick , left , animationArr[i].x , animationArr[i].y
     ;停顿2s后开始截图,截完图片后等待3s,在执行下一个点击操作,需要做成配置文件
     Sleep , 1000
     this.screenShot(pictureDir , picNo , picSuffix , snapType)
     picNo++
     Sleep , 1000
    }

 

6映射(键值数组)

关联数组是包含唯一键集合和值集合的对象, 其中每个键和一个值关联. 键可以为字符串, 整数或对象, 而值可以为任何类型. 关联数组可以用如下方法创建:

Array := {KeyA: ValueA, KeyB: ValueB, ..., KeyZ: ValueZ}
Array := Object("KeyA", ValueA, "KeyB", ValueB, ..., "KeyZ", ValueZ)

使用 {key:value} 表示法时, 对于仅由单词字符组成的键, 其两边的引号标记是可选的. 可以使用任何表达式作为键, 但使用变量作为键时, 它必须包围在小括号中. 例如, {(KeyVar): Value}{GetKey(): Value} 都是合法的.

获取项:

Value := Array[Key]

对项进行赋值:

Array[Key] := Value

移除项:

RemovedValue := Array.Remove(Key)

枚举项:

array := {ten: 10, twenty: 20, thirty: 30}
For key, value in array
    MsgBox %key% = %value%

 

 

 

 

你可能感兴趣的:(autohotkey)