Переход с Moose на Mouse в Perl - Mouse не выполняет BUILD - PullRequest
0 голосов
/ 26 февраля 2009

Я пытаюсь перейти с Moose на Mouse в интересах скорости, но обнаружил ошибку showtopper.

Я строю два объекта в одной области:

sub scope {

   my $foo = Foo->new();
   my $bar = Bar->new();

}

Метод BUILD для FILD запускается, а метод Bar для BUILD - нет. Есть идеи? И Foo, и Bar наследуются от Baz, который наследуется от Mouse :: Object.

1 Ответ

6 голосов
/ 08 марта 2009

Вы на самом деле не предоставляете достаточно контекста, чтобы кто-нибудь мог отладить это.

Кроме того, я беспокоюсь о том, что ваш комментарий переносится из Moose в Mouse "в интересах скорости" без улучшения. Есть несколько пакетов, которые тестируют скорость быстрее, чем Mouse или Moose. Профилирование вашего приложения может показать, что вы тратите 99% своего времени на комплементацию метаклассов, доступ к средствам доступа и создание объектов ... и в этом случае перенос на Mouse может быть оправдан. Может оказаться, что вы тратите 99% своего времени на бизнес-логику, и в этот момент перенос на мышь ничего не изменит для вас.

Мышь превосходна и имеет несколько конкретных случаев использования. Я использовал его в производстве, когда знал, что буду работать в среде, в которой у Moose традиционно плохие навыки (CGI). Однако Mouse не является (как некоторые утверждают, что это) Moose + FAST ... Mouse - больше Moose - Class :: MOP (и все хаки, которые пошли на нормализацию Perl на уровне MOP).

...