is => 'rw-6ren">
gpt4 book ai didi

perl - 驼鹿 "builder"与 "default"

转载 作者:行者123 更新时间:2023-12-03 20:27:56 27 4
gpt4 key购买 nike

我了解使用 builder使子类可以轻松覆盖属性默认值,并且角色可以require他们。这也可以使用 default 来完成。像这样:

has 'foo' =>
is => 'rw',
isa => 'Str',
default => sub { $_[0]->_build_foo };

我想知道使用 builder 是否还有其他优势我不知道?我自己想出了一些:
  • builder是声明性的,因此您可以自省(introspection) foo_build_foo build
  • builder消除了子程序包装,使其更快
  • builder允许使用有用的 lazy_build .

  • 更新 澄清一下,这与 default 无关。对比 builder一般但 default => sub { $_[0]->_build_foo }对比 builder => '_build_foo' .

    最佳答案

    我想你已经回答了你自己的问题。使用 builder允许后期绑定(bind),这可以很好地与打算被子类化的角色和类一起使用。如果构建器很长,这也很有值(value)——我从来没有放过 default多于一行的属性定义。没有真正的功能差异; default可以轻松模拟builder ,但结果不是很漂亮。

    关于perl - 驼鹿 "builder"与 "default",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9526347/

    27 4 0
    文章推荐: regression - 如何预测 R 中的单个值
    文章推荐: eclipse - 鉴于以下错误 : An internal Exception occurred during push: ssh://git@github. com/xxx/xxx.git: session is down,我如何推送到 Git Repo
    文章推荐: multi-select - 带有复选框插件的 HTML5 多选下拉菜单。设计为标准