我可以使用一些帮助来确定是否可以通过重载数学运算符来与 mixin 一起使用does
(or but
)以避免下面的歧义错误......该模块:
unit module Physics::Error;
role Error is export {
has Real $.abs-error;
method negate {
...
}
}
multi prefix:<-> ( Error:D $right) is export {
...
}
像这个脚本一样使用...
use Physics::Error;
my $x = 12.5 does Error(0.5);
my $z = -$x;
对 'prefix:(Rat+{Physics::Error::Error})' 的调用不明确;这些签名全部匹配:
(老鼠:D \a)
(物理::错误::错误:D $对)
我希望我的自定义运算符始终明确获胜,然后让它实现核心操作和错误计算,然后返回 (Rat+{Physics::Error::Error})。
大局是进行数学运算,同时也执行简单的误差计算。
Add an is default
你的多重特质:
multi prefix:<-> ( Error:D $right) is export is default {
也就是说,请注意 jnthn 的评论here https://stackoverflow.com/a/69116330/1077672:
is default
确实是最后的手段,即使你可以使用 mixin 方法让它工作,你也会发现结果非常慢,很大程度上是因为 mixin 触发了去优化(从专门的和 JIT 编译的代码中掉出来)口译员)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)