-3

给定访问器列表是否可能?如果有可能我将如何为每个创建构建器方法,我假设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,

);
}
4

1 回答 1

3

是的,这是可能的。它既记录在案,又易于测试。

文件所述,lazy_build不创建构建器;它指定一个属性应该被延迟初始化,并且它应该调用一个名为_build_${attr_name}. 您必须提供自己的构建器方法,称为_build_typeetc。

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

于 2013-01-08T17:32:27.047 回答