很酷的是,可以將它們添加到子類中或將它們混合到角色中。我的問題是,當子類重新定義方法本身(而不是修飾符)時,似乎來自基類的方法修飾符會停用。也許我正在理解方法修飾符錯誤。例如:基類中的Moose方法修飾符不會被調用
use feature 'say';
package Foo;
use Moose;
has called => (is => 'rw', isa => 'Bool', default => 0);
sub call { 'Foo called' }
after call => sub { shift->called(1) };
my $foo = Foo->new();
say $foo->called; # 0
say $foo->call; # Foo called
say $foo->called; # 1
package Bar;
use Moose;
extends 'Foo';
sub call { 'Bar called' }
my $bar = Bar->new();
say $bar->called; # 0
say $bar->call; # Bar called
say $bar->called; # 0
我希望最後的輸出爲1
像$foo
。我究竟做錯了什麼?
看起來像:http://stackoverflow.com/questions/4965197/in -perl-moose-how-can-i-apply-a-modifier-to-a-method-in-all-subclasses – RobEarl
謝謝@RobEarl,一定會看看! :) – memowe