出色的 2011 年 Raku Advent of Raku 后元编程:什么、为什么以及如何提供了一些清晰的示例,说明如何使用EXPORTHOW
来创建像class
. 这是第一个:
my class SingleInheritanceClassHOW
is Metamodel::ClassHOW
{
method add_parent(Mu $obj, Mu $parent) {
if +self.parents($obj, :local) > 0 {
die "Multiple inheritance is forbidden!";
}
callsame;
}
}
my module EXPORTHOW { }
EXPORTHOW.WHO.<class> = SingleInheritanceClassHOW;
有没有办法为声明者做类似的事情sub
(也就是说,允许用户提供签名和块,而不是允许用户提供属性和方法)?a 的元类Sub
是ClassHOW
,所以看起来类似的东西应该是可能的,但我没有看到这样做的方法。