Perlに関する質問です。

Class::Data::InheritableとClass::Data::Accessorの使い分けがわかりません。どのような場合にはどちらを使うべきなの説明をお願いします。

回答の条件
  • 1人2回まで
  • 登録:2006/11/02 00:42:11
  • 終了:2006/11/09 00:45:03

回答(1件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402006/11/02 01:44:17

ポイント60pt

ざっとソースを読んだ限りですが、

Class::Data::Inheritable はいわゆる「クラス変数」をもち、その変数へのアクセサを定義しています。

A というアクセサを定義した場合、Class->A も $obj->A も同じものをあらわします。


それに対し、Class::Data::Accessor は「クラス変数」と「オブジェクト変数」を同時に定義し、クラス変数の方をデフォルト地のような扱いにしているようです。

B というアクセサを定義した場合、最初は Class->B も $obj->B も同じ値を返しますが、$obj->B('test') というようにオブジェクトのメソッドを読んだ場合、クラス変数の方は変更されず、オブジェクト変数のみ代入されます。


単にクラス変数を定義したいなら、Class::Data::Inheritable を使用し、オブジェクトのメソッドのデフォルト値を定義したいのであれば Class::Data::Accessor を使うという事になるのではないでしょうか。

クラスのほうに重点を置くか、オブジェクトの方に重点を置くかの視点で考えればよいと思います。

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません