在Perl中,使用Moo
,可以实现around
子程序,这些子程序将包装类中的其他方法。
around INSERT => sub {
my $orig = shift;
my $self = shift;
print "Before the original sub\n";
my $rv = $orig->($self, @_);
print "After the original sub\n";
};
如何在Raku中实现此行为,最好使用
role
? 最佳答案
您可以使用角色隐藏方法,然后使用callwith
:
class Foo {
method meth { say 2 }
}
my $foo = Foo.new but role :: {
method meth(|c) { say 1; callwith(|c); say 3 }
};
$foo.meth