前言:
此时同学们对“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中数组也是对象吗