【发布时间】:2011-10-04 11:19:53
【问题描述】:
我意识到这通常不适用于所有 MooseX 模块,特别是在模块深入研究 Moose 和 Mouse 不同的元类的情况下。
但是这个问题出现了,因为有时 MooseX 模块在 MouseX 命名空间中没有等效模块,我发现我仍然可以在我的 Mouse 类中使用 MooseX 模块。但我想总体上问这个问题,即使有可用的 MouseX 等价物(假设我懒得安装 MouseX,或者 MooseX 版本更新了新功能)。
例如,以下是有效的:
package Foo;
use Mouse;
use MooseX::Types::Common::Numeric 'PositiveInt';
has 'bar' => (
is => 'rw',
isa => PositiveInt,
);
当我查看 MouseX::Types::Common::Numeric 源代码时,它几乎是 MooseX::Types::Common::Numeric 的精确副本,尽管作为依赖项的 MouseX::Types 存在差异。由于它是 perl 代码,因此使用 MouseX 模块也没有特别的性能优势。
所以如果我们有一个 Mouse 类并且可以选择使用等效的 MooseX 和 MouseX 模块,那么我们必须选择 MouseX 选项的原因是什么?为什么还有 MouseX 等价物?
顺便说一句,我们应该如何与Any::Moose 联系起来?
【问题讨论】: