小编Ale*_*dro的帖子

Perl类的属性组成?

假设我有多个角色,每个角色定义一组项目:

package A;
use Moose::Role;
sub items () { qw/apple orange/ }

package B;
use Moose::Role;
with 'A';
sub items () { qw/watermelon/ }

package C;
use Moose::Role;
sub items () { qw/banana/ }
Run Code Online (Sandbox Code Playgroud)

假设我在另一个类中使用它们,我想收集所有这些项目:

package Foo;
use Moose;
with qw(B C);

sub do_something {
    my $self = shift;
    my @items = ???;   # How can I get apple, orange, watermelon, banana here?
    ....
}
Run Code Online (Sandbox Code Playgroud)

一种可能的解决方案是采用MooseX :: ComposedBehavior,但是它的POD说(当然在编写时)它的API"不太稳定",而且"当前的实现是一种破解,应该被替换通过更健壮的一个".因此,我正在调查这是否可以在不依赖于这种"黑客"的情况下完成.

警告:如果您将来阅读此内容,请查看MooseX :: ComposedBehavior的POD (当前版本:0.003),因为它可能在平均时间内发生了变化.事情变化很快.CPAN作者发布了新版本.目前"不太稳定"的东西可能在未来变得更加稳定.甚至可能还有其他模块.自行检查.

理想情况下应该有类似的东西:my @items …

perl moose composition collect class-attributes

4
推荐指数
2
解决办法
673
查看次数

标签 统计

class-attributes ×1

collect ×1

composition ×1

moose ×1

perl ×1