【发布时间】:2010-10-01 13:39:01
【问题描述】:
我是Moose 的绝对新手,到目前为止,我已经阅读了Moose 和大部分Cookbook。
有几件事我不明白。我创建了以下包:
package MyRange;
use Moose;
use namespace::autoclean;
has [ 'start', 'end' ] => (
is => 'ro',
isa => 'Int',
required => 1,
);
__PACKAGE__->meta->make_immutable;
1;
然后:
use MyRange;
my $br = MyRange->new(
start => 100,
end => 180
);
现在我可以使用例如访问我的字段$br->{start},但我也可以使用例如修改它们(尽管它们是“只读的”) $br->{start}=5000。我还可以添加新的密钥,例如$br->{xxx}=111。
我错过了什么吗?对象不是以某种方式受到保护吗? ro是什么意思?
【问题讨论】: