我正在尝试将ro
属性子类化为rw
,如下所示:
has '+content' => (is => 'rw');
这似乎不起作用。这不可能吗?
答案 0 :(得分:1)
您应将一个对象定义为只读,然后提供一个私有编写器
#!/usr/bin/perl
use Modern::Perl;
{
package Foo;
use Moose;
has bar => (
is => 'ro',
writer => '_set_bar',
);
}
my $foo = Foo->new;
然后,如果您尝试$foo->bar('something');
,则会收到注释Cannot assign a value to a read-only accessor
中提到的错误,这就是您需要的$foo->_set_bar('something');
的妙处
多亏了继承,它将可以在整个Moose框架中正常工作。