加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – Moose“builder”vs“default”

发布时间:2020-12-15 21:13:44 所属栏目:大数据 来源:网络整理
导读:我明白使用构建器可以使子类轻松覆盖属性默认值,角色可以要求它们.这也可以使用如下默认设置完成: has 'foo' = is = 'rw',isa = 'Str',default = sub { $_[0]-_build_foo }; 我想知道使用建筑师是否还有其他优势我不知道?我已经想出了一些: builder是声明
我明白使用构建器可以使子类轻松覆盖属性默认值,角色可以要求它们.这也可以使用如下默认设置完成:
has 'foo' =>
    is       => 'rw',isa      => 'Str',default  => sub { $_[0]->_build_foo };

我想知道使用建筑师是否还有其他优势我不知道?我已经想出了一些:

> builder是声明性的,所以你可以内省foo由_build_foo构建
>构建器消除了一个子程序包装器,使其更快一些
> builder可以使用有用的lazy_build.

更新为了澄清,这不是一般的默认vs构建器,但默认=> sub {$_ [0] – > _build_foo} vs builder => ‘_build_foo’.

解决方法

我想你已经回答了你自己的问题.使用构建器允许后期绑定,它与要被子类化的角色和类很好地起作用.如果构建器很长,这也是有价值的 – 我从来没有将一个默认的行长度放在一个属性定义中.没有真正的功能差异默认可以轻松地模拟构建器,但结果不是很漂亮.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读