【问题标题】:Moose creating accessorsMoose 创建访问器
【发布时间】:2013-01-08 17:21:59
【问题描述】:

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

);
}

【问题讨论】:

    标签: perl moose


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 2011-09-07
      相关资源
      最近更新 更多