gpt4 book ai didi

调用对属性的编写器方法的引用时的 Perl Moose 异常

转载 作者:行者123 更新时间:2023-12-04 05:46:57 28 4
gpt4 key购买 nike

我试图将一个属性的 writer 方法的引用传递给另一个类方法。由于执行了打印语句,显然调用了 setter 方法。但是,会导致以下错误:

Attribute (dir) is required, so cannot be set to undef at Test.pm line 51
Test::_validateDir('Test=HASH(0x2270be0)', 'CODE(0x22a90f8)') called at test.pm line 37
Test::BUILD('test_moose=HASH(0x2270be0)', 'HASH(0x1879728)') called at generated method (unknown origin) line 50
Test:new('Test', dir=>'my_bin') called at ./test_moose.pl line 26

是否有理由不能引用生成的 writer 方法,或者在 Moose 中是否有不同或更好的方法来执行此操作?

这是代码:
package Test;
use Moose;
use File::Spec;

has 'dir' => (is => 'ro', isa => 'Str', required => 1, writer '_set_dir',);

sub BUILD {
my ($self, $hr) = @_;
$self->_validateDir(\&_set_dir);
}

sub _validate_dir {
my ($self, $setter) = @_;
my $dir = File::Spec->rel2abs($self->dir, '/home/me');
if (! -e $dir) {
print "creating directory\n";
#create directory
}
&$setter($dir);
}

最佳答案

将 setter 称为常规 sub 是否正确?你不应该通过$self作为第一个论点?

关于调用对属性的编写器方法的引用时的 Perl Moose 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10557384/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com