内容

名称

Tie::Array - 绑定数组的基类

概要

package Tie::NewArray;
use Tie::Array;
@ISA = ('Tie::Array');

# mandatory methods
sub TIEARRAY { ... }
sub FETCH { ... }
sub FETCHSIZE { ... }

sub STORE { ... }       # mandatory if elements writeable
sub STORESIZE { ... }   # mandatory if elements can be added/deleted
sub EXISTS { ... }      # mandatory if exists() expected to work
sub DELETE { ... }      # mandatory if delete() expected to work

# optional methods - for efficiency
sub CLEAR { ... }
sub PUSH { ... }
sub POP { ... }
sub SHIFT { ... }
sub UNSHIFT { ... }
sub SPLICE { ... }
sub EXTEND { ... }
sub DESTROY { ... }

package Tie::NewStdArray;
use Tie::Array;

@ISA = ('Tie::StdArray');

# all methods provided by default

package main;

$object = tie @somearray,'Tie::NewArray';
$object = tie @somearray,'Tie::StdArray';
$object = tie @somearray,'Tie::NewStdArray';

描述

此模块为绑定数组类提供方法。有关绑定数组所需的函数列表,请参见 perltie。基本的 Tie::Array 包提供什么都不做的 DESTROYEXTEND 方法,以及在对绑定数组调用 delete() 或 exists() 内置函数时会 croak() 的 DELETEEXISTS 方法的存根,以及根据基本 FETCHSTOREFETCHSIZESTORESIZE 实现的 PUSHPOPSHIFTUNSHIFTSPLICECLEAR 方法。

Tie::StdArray 包提供绑定数组所需的高效方法,这些方法作为对“内部” Perl 数组的祝福引用来实现。它继承自 Tie::Array,并且应该使绑定数组的行为与标准数组完全相同,从而允许选择性地重载方法。

对于希望编写自己的绑定数组的开发人员,所需的方法将在下面简要定义。有关更详细的描述以及示例代码,请参见 perltie 部分。

TIEARRAY 类名,列表

类方法由命令 tie @array, classname 调用。将数组实例与指定的类关联。LIST 代表完成关联所需的附加参数(类似于 AnyDBM_File 及其同类)。该方法应返回一个提供以下方法的类的对象。

STORE this, index, value

将数据 value 存储到与对象 this 关联的绑定数组的 index 中。如果这使得数组变大,则应为新位置返回类的 undef 映射。

FETCH this, index

检索与对象 this 关联的绑定数组的 index 中的数据。

FETCHSIZE this

返回与对象 this 关联的绑定数组中的项目总数。(等效于 scalar(@array))。

STORESIZE this, count

将与对象 this 关联的绑定数组中的项目总数设置为 count。如果这使得数组变大,则应为新位置返回类的 undef 映射。如果数组变小,则应删除超出 count 的条目。

EXTEND this, count

通知调用数组可能增长到包含 count 个条目。可用于优化分配。此方法无需执行任何操作。

EXISTS this, key

验证绑定数组 this 中是否存在索引 key 处的元素。

Tie::Array 实现是一个存根,它只是 croaks。

DELETE this, key

从绑定数组 this 中删除索引 key 处的元素。

Tie::Array 实现是一个存根,它只是 croaks。

CLEAR this

清除(删除、删除、...)与对象 this 关联的绑定数组中的所有值。

销毁 this

普通对象析构方法。

将 this 推入 LIST

将 LIST 中的元素追加到数组中。

弹出 this

移除数组的最后一个元素并返回它。

移位 this

移除数组的第一个元素(将其他元素向下移动)并返回它。

将 this 插入 LIST 的开头

将 LIST 元素插入数组的开头,将现有元素向上移动以腾出空间。

对 this 执行 splice 操作

对数组执行等效于 splice 的操作。

offset 是可选的,默认值为零,负值从数组末尾开始计数。

length 是可选的,默认值为数组的剩余部分。

LIST 可以为空。

返回 offset 处原始 length 个元素的列表。

注意事项

目前不支持绑定 @ISA。在用于检测 @ISA 设置的魔术条目和用于实现 'tie' 的魔术条目之间存在潜在的冲突。

作者

Nick Ing-Simmons <[email protected]>