如何防止在调用 new 时设置 Perl Moose 只读属性?
我想简单地在 Moose 中声明一个只读属性,该属性无法在调用 new 时初始化。因此,在声明以下内容之后:
package SOD::KuuAnalyze::ProdId;
use Moose;
has 'users' => (isa => 'ArrayRef[Str]', is => "ro");
1;
我不希望以下内容起作用:
my $prodid = SOD::KuuAnalyze::ProdId->new(users => ["one", "two"]);
I would like to simply declare a read only attribute in Moose that cannot be initialized in a call to new. So after declaring the following:
package SOD::KuuAnalyze::ProdId;
use Moose;
has 'users' => (isa => 'ArrayRef[Str]', is => "ro");
1;
I do not want the following to work:
my $prodid = SOD::KuuAnalyze::ProdId->new(users => ["one", "two"]);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
init_arg
属性配置(请参阅 Moose::手册::属性):Use the
init_arg
attribute configuration (see "Constructor parameters" in Moose::Manual::Attributes):如何
将
init_arg
设置为undef
似乎有必要禁止从构造函数设置属性。How about
Setting the
init_arg
toundef
seems to be necessary to disallow setting the attribute from the constructor.