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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |