【发布时间】:2020-09-23 02:26:32
【问题描述】:
所以 Raku 具有多重继承已经不是什么秘密了,这让我想知道:“Raku 如何以任何合理的方式处理它?”
一些初步测试表明默认行为是从继承列表中的 first 类继承的,这很好,许多其他语言也这样做
class A {
has $.foo = 0;
method speak {...}
}
class B is A {
has $.foo = 1;
method speak {
say 'moo';
}
}
class C is A {
has $.foo = 2;
method speak {
say 'baa';
}
}
class D is B is C {}
class E is C is B {}
say D.new.foo; # prints 1 (from B)
say E.new.foo; # prints 2 (from C)
但这让我想知道,如果我想让D 使用C 的speak 怎么办?
由于继承顺序,我默认得到 B。
我知道角色的存在是为了通过促进消歧机制来解决这个确切的问题,但假设我发现自己处于没有可供我使用的角色的情况(老板讨厌他们,继承了一个没有拥有它们,选择你的借口)并且真的需要消除继承类的歧义。
Raku 中的处理机制是什么?
【问题讨论】:
标签: multiple-inheritance raku diamond-problem