Perlについての質問箱 32箱目
■ このスレッドは過去ログ倉庫に格納されています
0186180
2007/08/22(水) 15:20:57以下の例では、Aで生成したオブジェクトを使ってfというメソッドを呼び出していますが、
素の状態ではB、D、Cの順に探索するのでDのメソッドが呼び出されます。
C::で修飾してもfの中に内部メソッドの呼び出しがあるので、意図とは反して
Dの_pメソッドが呼び出されてしまいます。
これを正しく呼び分けられるようにしたいというのが質問の意図です。
package A; @ISA = qw(B C);
sub new { bless {} }
package B; @ISA = 'D';
package C; @ISA = 'D';
sub f { $_[0]->_p }
sub _p { print "I like C.n" }
package D;
sub f { $_[0]->_p }
sub _p { print "I like D.\n" }
###
package main;
$o = A->new();
$o->f; # I like D
$o->C::f; # I like D (not C)
■ このスレッドは過去ログ倉庫に格納されています