对象

AutoHotkey 的基本对象数据类型是关联数组,特点是允许自定义它的行为。默认由 {}[]Object()Array() 创建的对象支持下列方法:

每个方法还具有等同的函数,可用于传递由对象实现的任何自定义行为,建议这些函数仅用于此目的。要调用某个函数,在方法名前加上“Obj”前缀并把目标对象作为首个参数传递过去。例如:

array := [1, 2, 3]
MsgBox % ObjMaxIndex(array) " = " array.MaxIndex()
 

Insert [AHK_L 31+]

插入键值对到对象中, 在合适时自动调整现有的键.

Object.Insert(Index, Value1 [, Value2, ... ValueN ])
Object.Insert(Value)
Object.Insert(Key, Value)
Index表示 Value1 插入位置的整数键. 后续的值插入到 Index+1, Index+2, 等等.
如果省略, 默认为 MaxIndex()="" ? 1 : MaxIndex() + 1.
字符串或目标键. 如果键已经存在, 那么会改写它的值.
字符串, 数字或对象.
返回值成功时返回 true, 而脚本内存不足时返回空字符串.

备注

注意此方法绕过 __Set 结构和 base 键的特殊行为。例如, Object.Insert("base","") 会使得 Object.base 返回空字符串而不是真正的基础对象, 但这样不会阻止触发对象元函数的其他操作.

Remove [AHK_L 31+]

从对象中移除键值对.

Object.Remove(FirstKey, LastKey)
FirstKey, LastKey需移除的整数或字符串键的范围. 如果两个键都是整数, 则任何大于 LastKey 的整数键通过减去 (LastKey - FirstKey + 1) 来模仿典型的基于数值索引的数组. 两个键必须为相同的类型 (整数或字符串).
返回值成功时返回被移除的实际键值对数目, 没有找到键则为零, 而失败时为空字符串.
Object.Remove(Key = MaxIndex())
任何有效键. 如果省略, 默认为现有的最大整数键; 如果不存在, 则什么都不移除. 调整现有的键就像使用 Remove(Key,Key) 一样.
返回值被移除的值(如果有),否则为空字符串。
Object.Remove(IntKey, "")

[AHK_L 61+]: 移除整数键并返回它的值, 但不影响其他整数键.

MinIndex / MaxIndex [AHK_L 31+]

MinIndex := Object.MinIndex()
MaxIndex := Object.MaxIndex()

如果存在整数键, 则 MinIndex 返回最小的那个而 MaxIndex 返回最大的那个. 否则返回空字符串.

SetCapacity [AHK_L 31+]

调整对象或其一个区域占用的内存空间.

Object.SetCapacity(MaxItems)
Object.SetCapacity(Key, ByteSize)
MaxItems对象在必须自动扩展前它可以包含的键值对的最大数目。如果少于键值对的当前数目,则使用该数目并释放未使用的空间。
任何有效键.
ByteSize为目标区域字符串缓存设置的新大小, 不包括空终止符, 单位为字节. 如果区域不存在, 则创建它. 如果 ByteSize 为零, 则清空缓存但不移除空区域. 如果 ByteSize 小于当前大小, 则移除额外的数据; 否则保留所有现有的数据.
返回值成功时返回新设置的内存空间, 否则为空字符串.

GetCapacity [AHK_L 31+]

MaxItems := Object.GetCapacity()
ByteSize := Object.GetCapacity(Key)

返回对象或其一个区域当前占用的内存空间.

GetAddress [AHK_L 31+]

Ptr := Object.GetAddress(Key)

返回区域字符串的缓存的当前地址,如果它含有。

NewEnum [AHK_L 49+]

Enum := Object._NewEnum()

返回枚举此对象的键值对的新的 枚举数. 该方法通常不直接调用,而是用于 for 循环中。

HasKey [AHK_L 53+]

Object.HasKey(Key)

如果与 Key 关联的值 (即使为 "") 在 Object 中则返回真, 否则为假.

Clone [AHK_L 60+]

Clone := Object.Clone()

返回对象的阴影副本.