1
私はその質問に正しい方法を尋ねてもわかりませんが、私は説明しようとします。継承されたmooseクラスのメタ情報を更新するには?
use MooseX::Declare;
class MyClass {
method test_it {
for (__PACKAGE__->meta->get_all_methods){
print $_->name . "\n";
}
}
}
そして、別のクラスのMyOtherClass.pm:
use MooseX::Declare;
class MyOtherClass extends MyClass {
method one {
return 1;
}
method two {
return 1;
}
method three {
return 1;
}
}
とスクリプトuse_it.pl:
#!/usr/bin/perl
use strict;
use warnings;
use MyClass;
use MyOtherClass;
my $class = MyOtherClass->new;
my $otherclass = MyOtherClass->new;
print "MyClass can:\n";
$class->test_it;
print "MyOtherClass can:\n";
$otherclass->test_it;
exit 0;
出力がある
は、私は、基本クラスのMyClass.pmを持っています:
MyClass can: dump DEMOLISHALL meta does new DESTROY BUILDALL BUILDARGS test_it DOES MyOtherClass can: dump DEMOLISHALL meta does new DESTROY BUILDALL BUILDARGS test_it DOES
MyClassでtest_itを呼び出すと、出力にはメソッドのいくつかのビルドと並んで期待どおりの "test_it"が含まれています。 MyOtherClassでtest_itを呼び出すと、1つ、2つ、3つの欠落がある同じ出力が生成されます。
どのようにして、継承クラスのすべてのメソッドを含むメソッドのリストを取得できますか?
ありがとうございます!ああ、あまりにも明白:) –
<3 perl。実際にムースを発明した人があなたの質問に答えてくれました。 \ o/ –
それについては事実上ありません。彼と "最初のコミット"。 – perigrin