fml8 チュートリアル (バージョン 7.99.1-20180910)
Prev | Chapter 49. IO インターフェイス | Next

# メソッド

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

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

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

## new()

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

    $obj = new IO::Adapter マップ;
    もしくは
    $obj = new IO::Adapter マップ, パラメータ(ハッシュリファレンス);

などとオブジェクトタイプを引数(マップ)で指定するため、 マップに応じた初期化を行ないます。

呼び出しの基本形は引数の多い方に合わせるので、次のようになります。

    my $config = $curproc->config();
    my $obj    = new IO::Adapter $map, $config;

HOOK なので利用する際にも、つねに、この形で書いておくべきです。

## 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() のように２つに分ける必要はありません。

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

Prev | Home | Next
IO インターフェイス | Up | 議論

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
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>.