我需要通过继承自Metamodel
的我的Metamodel::ParametricRoleHOW
类实现一些特殊功能。一种应用方式是使用特征。但是我想要一个很好的语法糖,就像我们可以对类进行处理一样:
special Mine {
...
}
好的,我将以下内容添加到我的模块中:
my package EXPORTHOW {
package DECLARE {
constant special = My::Metamodel::SpecialRoleHOW;
}
}
一切运行顺利...不,不是:
class Foo does Mine {
...
}
我最终得到:
对
Actions.nqp
进行的非常简短的检查显示,角色具有特殊的处理方式,但仅当且仅当role
关键字用于程序包声明时才使用。因此,我得出结论,拥有语法糖的唯一方法是将自己的规则混入主语法并模拟角色声明。幸运的是,package_def
依赖于$*PKGDECL
,这使得这种模拟成为可能。我的结论正确吗?还是存在一种更简单的方法来实现目标?
最佳答案
请求的功能尚无法实现。但是AFAIK,乔纳森·沃辛顿(Jonathan Worthington)正在研究可从其元类派生包类型的代码。虽然不确定他要走多远。
同时,可以通过扩展Perl 6语法的运行时间来实现所需的功能。我已经完成了OO::Plugin模块。