龙空技术网

AutoHotKey(简称ahk)中的对象和数组

白夜java 100

前言:

此时同学们对“java中数组也是对象吗”大致比较珍视,各位老铁们都需要了解一些“java中数组也是对象吗”的相关内容。那么小编同时在网上网罗了一些关于“java中数组也是对象吗””的相关知识,希望小伙伴们能喜欢,小伙伴们快快来学习一下吧!

AutoHotKey(简称ahk)中的对象和数组

本篇说明的是AHK中的对象数组,在编写一些稍微复杂的代码时,必不可少需要一种能够组织数据的容器,如果每个数据都不得不创建一个变量,用起来会很麻烦,而且看起来也乱糟糟的。

ahk提供了一个对象的概念,而且它并没有区分对象和数组,或者说在ahk里,数组就是一种比较特别的对象而已(但使用的时候和对象的操作其实还是有所不同)。

对象的概念和其他语言类似,核心都是“键”和“值”。不管是键还是值,都是没有任何限制的,可以是数字、可以是文本,甚至可以是另一个数组。例如当一个对象被称之为数组,那么它的键就是从1开始递增的数字(注意这里的数组下标不是从0开始)。

接下来的内容相对前面的比较长,先给个预警

创建对象

创建对象同样也有几种不同的方式,因为它和数组合并了,所以我们会有点眼熟。

方括号语法:

MyObject := ["one", "two", "three", 17]

这种就是典型数组初始化的语法,键也默认是从1开始递增的自然数。

大括号语法:

Banana := {"Color": "Yellow", "Taste": "Delicious", "Price": 3}

这种是对象初始化的语法,指定了键和值,注意这里的键也是要加双引号的

数组函数语法:

MyObject := Array("one", "two", "three", 17)

这种声明方式和java有点类似,相当于调用了Array的构造函数进行初始化,其实这种和方括号语法是一样的。

对象函数语法:

Banana := Object("Color", "Yellow", "Taste", "Delicious", "Price", 3)

这种也和大括号语法是一样的,只是它采用了函数的形式,相对使用的比较少。

使用对象

在操作对象的属性时,也有两种语法

Temp:=Banana["Pickled"] 或 Temp:=Banana.Pickled

方括号或句号,在我们使用时也是任选其一一直使用即可,推荐用方括号法。

插入新的键值对

在已经声明好的对象或数组中插入新的键值对也有几种不同的方式

MyObject["NewerKey"] := 3.1415MyObject[3] := 3.1415 或MyObject.NewKey := "Shiny" MyObject.3:= "Shiny"

方括号或句号,在我们使用时也是任选其一一直使用即可,推荐用方括号法。

除了这两种,还有两个函数插入法可供我们使用,但是一般是针对数组型对象的:

Push

MyObject.Push(Value1, Value2, Value3...)

push的作用是追加新的值到数组MyObject的尾部,或者说是将插入的值放在最高整数键+1的位置,可以一次插入多个值。

InsertAt

MyObject.insertAt(Index, Value1, Value2, Value3...)

Index(索引)为任意的整数键,这种方式会在指定的索引处插入值,并且可以一次插入多个值,只是这会导致插入点后面所有更高数字的整数键(包括插入位置的整数键)往后移动。

举例说明就是有一个["one", "two", "three", 17]的数组,对它使用MyObject.insertAt(4, "four", "five")后,它就会变成["one", "two", "three", "four", "five", 17],17这个值的键也从4变成了6

注意:由于并没有区分数组和对象,所以就算是数组,也可以插入一个键为name,值为李四的属性,完全可以混合使用。所以在说明两种函数时,用的都是最高整数键等等的词。这种情况下,使用push和insertAt插入新值时,它们也只会影响数组里键为整数的值。

删除键值对

通过调用对象的delete方法并传入要删除的键名,可以删除指定的键值对,并返回该键值对的值。

RemovedValue := MyObject.Delete(AnyKey)

这个delete方法还有个重载方法,适用于整数键的数组,通过指定开始和结束的键值,删除包括它们在内的中间所有整数键的键值对。返回值是被删除的键的数量。

NumberOfRemovedKeys := MyObject.Delete(FirstKey, LastKey)

例如你指定了删除1到4的键,但是这个对象数组中不存在键为2的值,这样返回值就是3。

同样还有两个函数删除法可供我们使用,一般也是针对数组型对象的:

Pop

MyObject.Pop()

和push相对,作用是删除MyObject最高整数位的键值对,并返回它的值。

RemoveAt

RemovedValue := MyObject.RemoveAt(Index) 或NumberOfRemovedKeys := MyObject.RemoveAt(Index, Length)

RemoveAt也有两种用法,但也只能用于整数键的对象

第一种是删除指定索引的键值对,并返回它的值。

第二种是批量删除,指定要删除的键的索引Index和要删除的长度Length,就会删除从Index 到 Index + Length - 1 之间的所有键(-1是因为包括了指定索引的键自身),并返回被删除的键的数量。删除完毕后,更高数字或整数的键将向下填充空缺,这和InsertAt的原理是一样的。

AHK中的对象和数组的学习就结束了,如果还想了解更多,可以从我的主页点进去看其他文章,都是干货~

标签: #java中数组也是对象吗