[Moscow.pm] Moose | Mouse вопрос

Ivan Petrov i.petro.77.00 на gmail.com
Сб Июл 14 03:24:25 PDT 2012


есть нужда создать "мягкий" вариант конструктора, который будет
возвращать 'undef' в случае неудачи.

во всех хауту по Mouse/Moose пишут "не переопределяйте new"

соответственно если пытаться сделать это в BUILDARGS

sub BUILDARGS {
    my $class = shift;

    ..

    return undef unless $condition;

    return {
    	abc => 'cde',
    	cde => ...
    }
}

то Mouse ругается что не хеш мы возвращаем

c другой стороны определив new

sub new {
    my ($class, @args) = @_;
    ...
    return undef unless $condition;
    return $self->SUPER::new({ abc => 'cde', cde => ... });
}

я добиваюсь чего хочу, но на такой пакет нелья поставить
make_immutable поскольку мой new оно заменит своим

выбрасывать исключение в BUILDARGS я не хочу, хочу вернуть undef.

как правильно поступить?


Подробная информация о списке рассылки Moscow-pm