如何使Perl 6课程最终定型?

时间:2018-11-24 16:20:35

标签: perl6

例如,我有这样的代码:

class Foo {}
class Bar is Foo {}

虽然此操作的有效性值得商,,但是否可以禁止从Foo继承?

1 个答案:

答案 0 :(得分:11)

在Perl 6语言中没有内置的方法来禁止类的继承,这是一个经过精心设计的决定。还不清楚即使通过元编程也可以实现这一目标,因为继承行为是由子类驱动的,而父类在过程中没有发言权。

但是,可以通过将各个方法声明为submethod而不是method来标记未继承的方法。

class P {
    submethod m() { say "not inherited" }
}
class C is P {
}

say ?P.can('m');  # True
say ?C.can('m');  # False