1
我尝试将Perl闭包变为Moo访问器,如下面的代码所示。不幸的是,代码与Moose一起工作,但与Moo一起抛出异常。Perl Moo,动态生成的访问器
请帮我写一个Moo代码,它带有由Perl闭包定义的读写访问器(不是读取和存储简单值的默认访问器,而是读取和写入应该调用我的闭包的访问器)。
#!/usr/bin/perl
package X;
use Moo;
my $BusinessClass = "X";
my $Key = 'zz';
no strict 'refs';
*{"${BusinessClass}::access_$Key"} = sub { "Modified $Key" };
has $Key => (is => 'rw',
required => 0,
accessor => { $Key => \&{"${BusinessClass}::access_$Key"} },
# predicate => { "has_$Key",\&{"${BusinessClass}::access2_$Key"} },
);
my $obj = X->new;
print $obj->zz, "\n";
在./test2.pl第27行使用未初始化的值。 – porton
酷,似乎已经工作。如果你真的先给它一个价值,你会得到更漂亮的东西。更新。 – ikegami