Прежде всего: расширение базовых классов, по крайней мере в обозримом будущем Rakudo Perl 6, - не хорошая идея.Он плохо работает с прекомпиляцией.
Во-вторых: когда класс является подклассом другого класса, подкласс "знает", от чего он наследует.Увы, это не работает наоборот: класс не знает своих подклассов (по крайней мере, на момент написания этой статьи).
Это означает, что если вы увеличиваете Any
, то ни один из егоПодклассы знают, что должны также заново составить себя.В первом примере вы делаете это с помощью класса List
, увеличивая его.Однако, если вы измените порядок дополнений, он также не будет работать, потому что класс List
будет перекомпонован до того, как класс Any
будет перекомпонован.
Поэтомурекомендуется смешивать любые дополнительные методы с использованием ролей либо в классе, либо в объекте ( смесь ролей )