【发布时间】:2020-03-01 18:21:17
【问题描述】:
我正在尝试使用多个调度来重载和使用组合类中的方法。这是实现:
role A {
has $!b;
submethod BUILD( :$!b ) {}
multi method bar () {
return $!b;
}
}
class B does A {
submethod BUILD( :$!b ) {}
multi method bar() {
return " * " ~ callsame ~ " * ";
}
}
my $a = A.new( b => 33);
say $a.bar();
my $b = B.new( b => 33 );
say $b.bar();
但是,这会失败,因为:
Calling callsame(Str) will never work with declared signature ()
(我真的不知道为什么 callame 使用Str 作为签名)。将method bar 更改为使用callwith:
multi method bar() {
return " * " ~ callwith() ~ " * ";
}
根本行不通:
Use of Nil in string context
in method bar at multi.p6 line 18
* *
在角色/类中使用call* 有什么特殊的方法吗?
【问题讨论】:
标签: roles raku multiple-dispatch