Еще можно делать no Moose перед этим, что в скриптах использующих ваши классы не был доступен синактический сахар. Вот только к «фишкам» это сложно отнести.
ЗЫ: кстати, при использовании MooseX::Declare это делается автоматически. Об этом написано в конце п. 2.1
В «комплекте по-умолчанию» такого нет. Хотя вобщем-то и среди расширений я такого не видел.
Но реализовать такое вручную не сложно: вы можете вмешаться в работу стандартного конструктора используя ф-ю BUILD. package Foo;
use Moose;
has errstr => ( is=>'ro', isa => 'Str', lazy => 1, ); # правильнее будет вынести это в роль, но для сокращения кода оставлю так
sub BUILD {
my $self = shift;
my $obj = eval { $self->SUPER::BUILD(@_) };
$self->errstr($@) if $@;
> Код само-документируется
Согласен. Попал в проект, код которого не документирован. Хорошо, что все переменные и методы, классы названы по аналогии с объектами и операциями реального мира, можно код практически прозрачно для всех читать вслух.
Уже покупал. Буду покупать в дальнейшем. Планирую рано или поздно легализовать всю музыку на компе)
Иногда до сих пор покупаю диски, но с ними возиться неудобно.
Программисты, которые после прочтения «программирование — отстой» осознали ситуацию, теперь ухватились за этот пост, чтобы снова заниматься самообманом)
no Mooseперед этим, что в скриптах использующих ваши классы не был доступен синактический сахар. Вот только к «фишкам» это сложно отнести.ЗЫ: кстати, при использовании MooseX::Declare это делается автоматически. Об этом написано в конце п. 2.1
Но реализовать такое вручную не сложно: вы можете вмешаться в работу стандартного конструктора используя ф-ю BUILD.
package Foo;
use Moose;
has errstr => ( is=>'ro', isa => 'Str', lazy => 1, ); # правильнее будет вынести это в роль, но для сокращения кода оставлю так
sub BUILD {
my $self = shift;
my $obj = eval { $self->SUPER::BUILD(@_) };
$self->errstr($@) if $@;
$obj
}
PS: код не проверял, писал сразу сюда
emacs: github.com/jrockway/cperl-mode/tree/master
Согласен. Попал в проект, код которого не документирован. Хорошо, что все переменные и методы, классы названы по аналогии с объектами и операциями реального мира, можно код практически прозрачно для всех читать вслух.
разработчик на perl
Иногда до сих пор покупаю диски, но с ними возиться неудобно.
Вот и получается write-only