回答:
使用する wrap
sub bar () { return "baþ" };
my $wrapped = &bar.wrap( { " → " ~ callsame() ~ " ← " } );
say bar(); # OUTPUT: «→ baþ ← »
以降の方法はルーチンなので、あなたはメソッド自体のハンドルを取得するにはもう少しコンボリューション方法が必要になりますが、それ以外のだろう、この方法は、まったく同じであるMethod
sがのサブクラスであるRoutine
S
class Baz {
method bar () { return "baþ" };
}
my &method_bar = Baz.^find_method("bar");
my $wrapped = &method_bar.wrap( { " → " ~ callsame() ~ " ← " } );
say Baz.bar(); # OUTPUT: «→ baþ ← »
$wrapped
必要であれば、それをアンラップするために、後に、使用することができる手段です。
編集:たとえば、ここから取得したクラスメソッドのハンドルを取得するコードを追加します。
Method
はaRoutine
Moo
周りは、サブルーチンをラップするようなものではありません。