我正在尝试使用Mouse编写一个 perl 模块,在初始化对象之后,但在用户进行任何调用之前,我需要使用用户需要提供的 object2 和 object3 中的两个值来初始化 object1。我尝试使用 Mouse 的after
功能来调用 after 的子例程new
:
package Test;
use strict;
use Mouse;
has 'object1' => ( is => 'rw', isa => 'Any');
has 'object2' => ( is => 'ro', isa => 'Str', required => 1);
has 'object3' => ( is => 'ro', isa => 'Str', required => 1);
after 'new' => sub {
my ($self) = @_;
$self->object1(#do stuff with object2 and object3);
};
1;
但是,目前我收到此错误:
Invalid object instance: 'Test' at lib/Test.pm line 18.
有没有一种方法可以在用户获取返回给他们的对象引用之前使用用户提供的值初始化一个值?