穆斯创建访问者

时间:2013-01-08 17:21:59

标签: perl moose

给出一个访问者列表有以下可能吗?如果有可能我如何为每个创建构建器方法,我假设lazy_build属性会这样做?请帮忙

my @accessors= qw/type duration process/; # used 3 as example but the list is about 50

foreach my $accessors (@accessors) {
has $accessors => (
    is         => 'rw',
    isa        => 'Str',
    lazy_build => 1,

);
}

1 个答案:

答案 0 :(得分:3)

是的,这是可能的。记录下这些都是可行的,也很容易进行测试。

作为documentedlazy_build不会创建构建器;它指定一个属性应该被懒惰地初始化,并且它应该调用一个名为_build_${attr_name}的构建器。您必须提供名为_build_type等的自己的构建器方法。

如果您的属性都采用相同的构建器(不太可能,但可能会这样做),请不要说lazy_build。相反,请说lazy => 1, builder => '_build_stuff'并实施_build_stuff以适用于每个案例。但就像我说的那样,这不太可能;事实上,你可以轻松地在循环中使用它实际上是lazy_build的优势之一。