Я понимаю, что использование builder
позволяет подклассам легко переопределять атрибуты по умолчанию, а роли могут require
их. Это также можно выполнить с помощью default
следующим образом:
has 'foo' =>
is => 'rw',
isa => 'Str',
default => sub { $_[0]->_build_foo };
Мне интересно, есть ли дополнительные преимущества для использования builder
, о которых я не знаю? Я сам придумал:
-
builder
является декларативным, поэтому вы можете понять, чтоfoo
создается_build_foo
-
builder
исключает оболочку подпрограммы, что делает ее немного быстрее -
builder
позволяет использовать полезныйlazy_build
.
UPDATE. Чтобы прояснить это, речь идет не о default
vs builder
вообще, а default => sub { $_[0]->_build_foo }
vs builder => '_build_foo'
.