相关疑难解决方法(0)

EXPORTHOW :: DECLARE和类似角色的声明

我需要通过Metamodel继承自我的一类实现一些具有一些特殊功能的角色Metamodel::ParametricRoleHOW.应用它的一种方法是使用特征.但我想要一个很好的语法糖,就像我们可以用类做的那样:

special Mine {
    ...
}
Run Code Online (Sandbox Code Playgroud)

好的,我将以下内容添加到我的模块中:

my package EXPORTHOW {
    package DECLARE {
        constant special = My::Metamodel::SpecialRoleHOW;
    }
}
Run Code Online (Sandbox Code Playgroud)

一切顺利......不,不是:

class Foo does Mine {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我最终得到:

Could not instantiate role 'Mine':

一个非常简短的检查Actions.nqp显示角色有特殊处理,但仅限于且仅当role关键字用于包声明时.因此,我的结论是有语法糖的唯一途径-是混入我自己的规则到主语法和模拟角色声明.幸运的是,它package_def依赖于$*PKGDECL它,这使得这种模拟成为可能.

我在结论中是对的吗?还是有一种更简单的方法来实现目标?

perl6

8
推荐指数
1
解决办法
85
查看次数

标签 统计

perl6 ×1