对象
优质
小牛编辑
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()
返回对象的阴影副本.