【发布时间】:2014-03-21 11:22:48
【问题描述】:
尝试了解 Moose:
use Modern::Perl;
package FOO {
use Moose;
sub rep { say " <report></report>"; }
sub doc {
say "<document>";
inner();
say "</document>";
}
}
package BAR {
use Moose;
extends 'FOO';
around 'rep' => sub {
my $orig = shift;
my $self = shift;
say "<document>";
$self->$orig(@_);
say "</document>";
};
augment 'doc' => sub {
say " <report></report>";
};
}
package main {
BAR->new->rep;
say "===";
BAR->new->doc;
}
生产...
<document>
<report></report>
</document>
===
<document>
<report></report>
</document>
...同样的结果。在设计“模型(对象层次结构)”时 - 基于我应该决定何时使用around 以及何时使用augment?
这里可能还有其他(更深层次的)事情我目前还不了解。
请有人提供“更深入”的解释,因为阅读 Moose/Manual/MethodModifiers 显然没有足够的帮助......
【问题讨论】: