微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

perl – Moose“builder”vs“default”

我明白使用构建器可以使子类轻松覆盖属性认值,角色可以要求它们.这也可以使用如下认设置完成:
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’.

解决方法

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

原文地址:https://www.jb51.cc/Perl/172724.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐