* 非Mouseクラスの継承 [#gb55aa4f]

*** MyUA.pm [#j6aa09de]
 package MyUA;
 use Mouse;
 use MouseX::Foreign qw/LWP::UserAgent/;
 
 sub FOREIGNBUILDARGS {
     my $class = shift;
     my %args  = @_;
     return ( agent => $args{agent} );
 }
  
 __PACKAGE__->meta->make_immutable();
 1;

*** main.pl [#ef758325]
 use MyUA;
 my $ua = MyUA->new( name => 'this-is-useless', agent => 'my-test-ua' );

** 説明 [#q5cbdbfa]

- 非Mouseクラスを継承する場合、extendsではなく、MouseX::Foreignを使う。
-- ここでは非MouseクラスであるLWP::UserAgentを継承する。
- FOREIGNBUILDARGS()で親クラスのnew()に渡す引数を作成する。
-- ここでは( agent => $args{agent} )がLWP::UserAgentのnew()に渡る。
-- ここでは記述がないが、BUILDARGS()でMyUAクラスのコンストラクタに渡す引数を作成出来る。
- ここでは記述がないが、BUILDARGS()でMyUAクラスのコンストラクタに渡す引数を作成出来る。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS