在Perl中从Moose迁移到Mouse - 鼠标不执行BUILD

git*_*oob 0 perl moose perl-mouse

为了速度,我正试图从Moose迁移到Mouse,但遇到了一个showstopper错误.

我在同一范围内构建两个对象:

sub scope {

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

}
Run Code Online (Sandbox Code Playgroud)

Foo的BUILD方法正在触发,但Bar的BUILD方法却没有.有任何想法吗?Foo和Bar都继承自Baz,后者继承自Mouse :: Object.

per*_*rin 6

你没有真正为任何人提供足够的上下文来调试它.

此外,我担心你的评论从Moose迁移到Mouse"为了速度"而没有更好的.有几个包的速度比Mouse或Moose的速度更快.分析您的应用程序可能表明您将99%的时间花在元类补充,访问者访问和对象创建上......此时移植到鼠标可能是合理的.可能会发现您将99%的时间花在业务逻辑上,此时移植到Mouse将无法为您做任何事情.

鼠标很棒,并且有几个特定的​​用例.当我知道我将在Moose传统上很穷的环境(CGI)中运行时,我已经将它用于生产中.然而鼠标不是(正如一些人似乎声称的)Moose + FAST ...鼠标更像是Moose - Class :: MOP(以及所有已经在MOP级别对Perl进行规范化的黑客攻击).