对象

优质
小牛编辑
138浏览
2023-12-01

所有由 Object(){} 创建的对象的内置方法都可以作为正常的函数或方法访问:

result := obj.Method(params)

这种调用方法方式允许每个对象为此方法实现自身的行为。但是,如果一个对象覆盖了内置方法,那么通常需要一种方式访问原始的功能。可以使用函数形式进行访问:

result := ObjMethod(obj, params)

因为函数名称在加载时解析, 所以直接调用函数会执行地稍快些, 但语法往往不够直观. 对象实现的任何自定义行为都会被忽略, 所以这些函数一般应该仅对象自身使用.

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()

返回枚举此对象的键值对的新的 枚举数.

HasKey [AHK_L 53+]

Object.HasKey(Key)

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

Clone [AHK_L 60+]

Clone := Object.Clone()

返回对象的阴影副本.