Допустим, у каждого есть A :: Very :: Shallow :: ClassA и A :: Very :: Deep :: ClassB
Файл: ./A/Very/Shallow/ClassA.pm6
class A::Very::Shallow::ClassA{
has Str $.label is rw;
has Str $.icon is rw;
has @.items is rw;
}
Я хочу наследовать от ClassA в ClassB, поэтому я пишу:
Файл: ./A/Very/Deep/ClassB.pm6
class A::Very::Deep::ClassB is A::Very::Shallow::ClassA{
...
}
Тем не менее, ошибки с:
Cannot resolve caller trait_mod:<is>(A::Very::Deep::ClassB, A::Very::Shallow::ClassA, Hash); none of these signatures match:
(Mu:U $child, Mu:U $parent)
(Mu:U $child, :$DEPRECATED!)
(Mu:U $type, :$rw!)
(Mu:U $type, :$nativesize!)
(Mu:U $type, :$ctype!)
(Mu:U $type, :$unsigned!)
(Mu:U $type, :$hidden!)
(Mu:U $type, Mu :$array_type!)
(Mu:U $type, *%fail)
(Attribute:D $attr, |c is raw)
(Attribute:D $attr, :$rw!)
(Attribute:D $attr, :$readonly!)
(Attribute $attr, :$required!)
(Attribute $attr, Mu :$default!)
(Attribute:D $attr, :$box_target!)
...
Я нашел много документации и примеров по наследованию, но ни одна из них, кажется, не охватывает то, что я считаю простой существенной проблемой. Я знаю, что ответ может быть очевидным, но в данный момент мне его не хватает.
Что происходит, когда классы находятся в том же пакете, что и в
A::Money::Card is A::Money::Item
В данный момент я немного озадачен, поэтому любые указатели были бы великолепны. Заранее спасибо.