我想在构造函数中传递名为“A”的类对象的引用。并使用“验证”功能进行检查。
像那样:test1.pm
my $object = Object1->new;
my $newObject = Object2->new({
param1 => $object,
});
test2.pm
sub new {
my $class = shift;
my (%options) = validate (@_, {
param1 => { type => SCALARREF, default => undef},
});
...
}
我不确定参数param1的类型的问题。我尝试了“OBJECT”和“SCALARREF”,但是有一些错误,比如“在严格的sub下不允许使用SCALARREF”。
我应该使用哪种类型?
答案 0 :(得分:2)
看起来你正试图在这里做一个准Moose
的事情。但是在Moose中,你不会创建new
个潜艇,因为Moose
会为你做到这一点。如果您需要任何内容 - 您可以创建一个BUILD
子。
Perl(5)基础对象系统不像Moose那样工作,所以'SCALARREF'
或者你在Perl基础上做的是什么。
new
?validate( {}, {} )
如果没有定义SCALARREF
,它将永远是一个单词。
阅读Moose
。您可以从Moose Types Manual开始,查看ScalarRef
的使用方式,但由于您甚至没有显示“use Moose
”,因此您应该从Manual的第1页开始}。