如何重命名 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_string
和 new_from_integer
方法。除非你有充分的理由,否则我会远离使用 new
以外的东西。话虽如此,如果你认为它对用户更有帮助,你可以添加一个方便的方法。
sub get_repository {
my $class = shift;
return $class->new( @_ );
}
有没有办法将 Moose 提供的默认构造函数重命名为“新”以外的名称?
我想这样做是为了让脚本对用户更友好,因为将构造函数命名为不同的名称(例如“make_thing”更有意义)
my $object = Class->make_thing();
我怎样才能做到这一点?
让我举个例子来说明这可能对用户更友好...
假设我正在构建一个处理 CVS 存储库信息的模块,该模块称为“CVS”。我可以使用
创建一个存储库实例$repository = CVS->new()
或者如果我可以更改构造函数的名称,我可以将其命名为
$repository = CVS->get_repository()
这对用户来说更符合逻辑。
有时使用替代构造函数是有意义的。例如,如果您查看 Net::Works::Network,它有 new_from_string
和 new_from_integer
方法。除非你有充分的理由,否则我会远离使用 new
以外的东西。话虽如此,如果你认为它对用户更有帮助,你可以添加一个方便的方法。
sub get_repository {
my $class = shift;
return $class->new( @_ );
}