В вашем коде есть две неправильные вещи:
say random-f.argh; # *call* random-f and then call .argh on the result
Вы хотите позвонить .argh
на Callable
так:
say &random-f.argh;
Во-вторых, вы должны просто иметь возможностьдля вызова self
: вы можете настроить это в сигнатуре .argh
метода:
method argh(&self:) {
Таким образом, окончательный код становится:
my &random-f = -> $arg { "Just $arg" };
say random-f("boo");
role Argable {
method argh(&self:) {
self( "argh" );
}
}
&random-f does Argable;
say &random-f.argh;