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