在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

10-07 14:59