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 套件提供空的 DESTROY
和 EXTEND
方法,空的 DELETE
和 EXISTS
方法會在繫結陣列上呼叫 delete() 或 exists() 內建函式時 croak(),以及 PUSH
、POP
、SHIFT
、UNSHIFT
、SPLICE
和 CLEAR
的實作,這些實作是根據基本的 FETCH
、STORE
、FETCHSIZE
、STORESIZE
。
Tie::StdArray 套件提供繫結陣列所需的高效率方法,這些陣列實作為受祝福的參考,指向「內部」perl 陣列。它繼承自 Tie::Array,且應使繫結陣列的行為與標準陣列完全相同,允許選擇性地覆寫方法。
對於想要撰寫自己的繫結陣列的開發人員,以下簡要定義所需的方法。請參閱 perltie 部分以取得更詳細的說明,以及範例程式碼
類別方法由指令 tie @array, classname
呼叫。將陣列實例與指定的類別關聯。LIST
會表示完成關聯所需的額外引數(例如 AnyDBM_File 和同類項)。該方法應傳回提供以下方法的類別的物件。
將資料 value 儲存在與物件 this 關聯的繫結陣列的 index 中。如果這會讓陣列變大,則類別的 undef
對應應傳回給新位置。
擷取與物件 this 關聯的繫結陣列中 index 的資料。
傳回與物件 this 關聯的繫結陣列中的項目總數。(等於 scalar(@array)
)。
將與物件 this 關聯的繫結陣列中的項目總數設定為 count。如果這會讓陣列變大,則類別的 undef
對應應傳回給新位置。如果陣列變小,則應刪除超過 count 的項目。
告知呼叫陣列可能會增加到有 count 個項目。可用於最佳化配置。此方法無需執行任何動作。
驗證繫結陣列 this 中索引 key 的元素是否存在。
Tie::Array 實作是一個單純會 croak 的 stub。
從繫結陣列 this 中刪除索引 key 的元素。
Tie::Array 實作是一個單純會 croak 的 stub。
清除與物件 this 關聯的繫結陣列中的所有值(移除、刪除、...)。
正常的物件解構函式方法。
將 LIST 的元素附加到陣列。
移除陣列的最後一個元素並傳回它。
移除陣列的第一個元素(向下移動其他元素)並傳回它。
在陣列的開頭插入 LIST 元素,並將現有的元素向上移動以騰出空間。
對陣列執行等同於 splice
的操作。
offset 是可選的,預設為零,負值從陣列的結尾開始倒數。
length 是可選的,預設為陣列的其餘部分。
LIST 可以是空的。
傳回在 offset 處的原始 length 元素的清單。
目前不支援綁定的 @ISA。在用於注意到 @ISA 設定和用於實作 'tie' 所需的魔法項目之間存在潛在衝突。
Nick Ing-Simmons <nik@tiuk.ti.com>