加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – Moose :: Role – 增加角色应用的简单方法?

发布时间:2020-12-16 06:24:58 所属栏目:大数据 来源:网络整理
导读:我有一个Moose :: Role,当该角色应用于类时,我想在类上调用一些额外的subs. 有没有一种简单的方法来修改应用角色时会发生什么,而不必过多地挖掘Moose :: Meta :: Role类型编码?理想情况下,我只想在’apply’=之后…添加额外的东西. 编辑: 我特意使用它与DB
我有一个Moose :: Role,当该角色应用于类时,我想在类上调用一些额外的subs.

有没有一种简单的方法来修改应用角色时会发生什么,而不必过多地挖掘Moose :: Meta :: Role类型编码?理想情况下,我只想在’apply’=>之后…添加额外的东西.

编辑:

我特意使用它与DBIx :: Class :: Core结果定义来创建类似于也修改构造函数的组件.如果我可以在BUILDARGS和BUILD subs获得结果,我会把它写成一个组件,但我似乎无法做到.因此,我没有使用load_component,而是使用’role’,但组件的一些效果是将belongs_to关系添加到类中.因此,我认为最好的方法是在将角色应用到班级期间.

解决方法

在一篇简短的评论中,我向您推荐了 this question,其中讨论了如何访问角色所应用的类的元类(例如,这样您可以有条件地构建到类上).但是,这是一个非常糟糕的使用MooseX :: Role :: Parameterized为您提供的信息,如果角色被应用于另一个角色而不是类,它也将无法工作.

作为替代方案,您可以编写一个接收元信息的糖函数,并以这种方式构建到类上:

sub foo
{
     my ($meta,%options) = @_;

     # based on what is present in %options,add additional attributes...
     $meta->add_attribute(...);
}

有关编写糖函数的示例,请参见Moose::Cookbook::Extending::Recipe4.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读