如何重命名 Perl 的 Moose 模块提供的默认构造函数?

How can I rename the default constructor provided by Perl's Moose module?

有没有办法将 Moose 提供的默认构造函数重命名为“新”以外的名称?

我想这样做是为了让脚本对用户更友好,因为将构造函数命名为不同的名称(例如“make_thing”更有意义)

my $object = Class->make_thing();

我怎样才能做到这一点?


让我举个例子来说明这可能对用户更友好...

假设我正在构建一个处理 CVS 存储库信息的模块,该模块称为“CVS”。我可以使用

创建一个存储库实例

$repository = CVS->new()

或者如果我可以更改构造函数的名称,我可以将其命名为

$repository = CVS->get_repository()

这对用户来说更符合逻辑。

有时使用替代构造函数是有意义的。例如,如果您查看 Net::Works::Network,它有 new_from_stringnew_from_integer 方法。除非你有充分的理由,否则我会远离使用 new 以外的东西。话虽如此,如果你认为它对用户更有帮助,你可以添加一个方便的方法。

sub get_repository {
    my $class = shift;
    return $class->new( @_ );
}