我试图将一个ro属性子类化,使它rw像这样:
has '+content' => (is => 'rw');
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.这不可能吗?
您应该将对象定义为只读,然后提供私有写入器
#!/usr/bin/perl
use Modern::Perl;
{
package Foo;
use Moose;
has bar => (
is => 'ro',
writer => '_set_bar',
);
}
my $foo = Foo->new;
Run Code Online (Sandbox Code Playgroud)
然后,如果您尝试这样做,$foo->bar('something');您将收到您在评论中提到的错误Cannot assign a value to a read-only accessor,这就是您需要的魔法,$foo->_set_bar('something');
感谢继承,它将在 Moose 框架中工作。
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |