メソッド / operation vector

前述のように IO::Adapter の基本メソッドは次の通りです。

open()
close()
add(KEY, ARGV) (ARGV はクラス依存のデータ渡しのためにある引数)
delete(KEY)
find(KEY or REGEXP)
get_next_key()

もちろん、オブジェクトを生成するのは new() ですので、 これら以外に new() だけは必要です:) 必要なら適宜、ディストラクタも定義して下さい。

オブジェクトを生成するのは new() です。 たとえば IO::Adapter であれば、

$obj = new IO::Adapter マップ;
などとオブジェクトタイプを引数(マップ)で指定するため、 それに応じた初期化を行ないます。

open()

ファイルであれば open(2)、RDBMS であれば SQL サーバへの接続を確立する といった具合です。

close()

すなおに open() の逆です。

add(KEY, ARGV)

KEY (プライマリキー)もしくは、KEY および KEY に付随するデータをオブジェ クトに書き込みます。なお、ARGV はクラス依存のデータ渡しのためにある引 数で、この引数が使われないこともあります。

UNIX と異なり、オブジェクトの構造に一定の型があります。型とは RDBMS の ようなテーブルの形です。

また、プライマリキーとなるのは通常メールアドレスです。この前提が多くの 場面で正しいため、メールアドレスをプライマリキーにしたテーブル型が基本 的なデータ構造といえるわけです。

delete(KEY)

KEY および KEY に付随するデータ構造を削除します。

find(KEY) / find(REGEXP)

オブジェクト内からプライマリキーに該当するデータを探します。

探す対象を正規表現で指定できるように作る方が便利です。 正規表現検索が使えると、ユーザ検索などで重宝します。

返り値は STR か ARRAY_REF (KEY に対する [ VALUE, VALUE2, VALUE3 ])です。

get_next_key()

プライマリキーの一覧を取り出したい場合が多々あります。 そこで

while ($obj->get_next_key()) { ... }
のような表現を可能とするために、このメソッドが実装されています。

これはハッシュの FIRST_KEY() と NEXT_KEY() にあたるといえます。 しかしながら、我々の場合は open() などのメソッドが別途用意されているため、 FIRST_KEY() と NEXT_KEY() のように2つに分ける必要はありません。

XXX すなおに、key() もしくは get_key() でも良い気がする?

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/fml/menu.ja.html.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.