0:00
 
Window Title
 
 
 
 
 
 
 
 
壁紙の変更

コンピュータ

ネットワーク

ドキュメント

ごみ箱
マイコンピュータ
マイネットワーク
マイドキュメント
ごみ箱

オンラインゲーム

DHTML素材

perl module忘備録

RFC翻訳

文字コード

 

コンピュータ

ネットワーク


コントロールパネル

perl module 忘備録

Class::Accessor::Fast

パッケージのプロパティとアクセサ(プロパティにアクセスするメソッド)を自動定義する。

使用例:
package foo1;
use base qw(Class::Accesor::Fast);
foo1->mk_accessors(qw(faa));                # RWアクセサを定義
foo1->mk_ro_accessors(qw(fbb));          # ROアクセサ(setter定義なしのアクセサ)を定義
foo1->mk_wo_accessors(qw(fcc));         # WOアクセサ(getter定義なしのアクセサ)を定義(注1)

package main;
my $foo = new foo1( {fbb => 20} );        # $foo->{'fbb'}に20が代入される(注2)
$foo->faa(10);                                         # faa setter : $foo->['faa'} に10が代入される
print $foo->faa,"\n";                                 # faa getter:$foo->{'faa'}が取得される
print $foo->fbb,"\n";                                 # fbb getter:fbb はROなので$foo->fbb(20)はエラー
$foo->fcc(30);                                         # fcc setter:fccはWOなので$foo->fccはエラー

注1:パッケージ内でも$foo->fcc はエラーになる。
getterが定義されていないだけなので、参照するときは、$foo->{'fcc'} で参照できる。

注2:RO アクセサでも、newのパラメタからは設定可能。
もっとも、setterが定義されていないだけなので、$foo->{'fbb'}に代入すれば書換え出来てしまう。
このパラメタの処理は、Class::Accessor::Fastのコンストラクタが行っている。継承クラスでコンストラクタをオーバーライドした場合は、Class::Accessor::Fastのコンストラクタを正しく呼び出さないと処理されなくなる。

レディ