对象
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)
返回区域字符串的缓存的当前地址,如果它含有。
HasKey [AHK_L 53+]
Object.HasKey(Key)
如果与 Key 关联的值 (即使为 "") 在 Object 中则返回真, 否则为假.
Clone [AHK_L 60+]
Clone := Object.Clone()
返回对象的阴影副本.