【发布时间】:2017-12-31 10:30:21
【问题描述】:
在 Moose 中,我们可以对实例属性进行限制或添加 getter/setter,如下所示:
has 'color' => (
is => 'rw',
isa => 'Str',
writer => '_set_color',
);
我的问题是,有没有办法为一组元素动态执行此操作?可以这样做:
has ['color', 'temperature', 'size'] => (
is => 'rw',
isa => 'Str',
);
但是有没有办法为这些项目中的每一个创建自己的编写器(或读取器),例如_set_color, _set_temperature, _set_size?我试图查看以下是否产生了任何见解,但它返回了错误
错误的访问器/读取器/写入器/谓词/更清晰的格式,必须是 HASH 参考
has ['color', 'temperature', 'size'] => (
is => 'rw',
isa => 'Str',
writer => sub {
print Dumper(\@_);
return;
);
我希望得到的是类似的东西(这是行不通的):
has ['color', 'temperature', 'size'] => (
is => 'rw',
isa => 'Str',
writer => "_set_$_";
);
我需要自定义编写器,所以只使用 Moose 提供的编写器不适合我。
【问题讨论】: