Moose:通过创建对象来检查属性

时间:2013-02-17 13:45:16

标签: perl moose

我和Moose迈出了第一步,我有以下问题。 似乎我可以分配我未在模块中指定的属性。如果我尝试访问此属性,则会出现错误消息。我怎么能阻止模块中未指定的属性的赋值?在下面的例子中,我指定了年龄,虽然我没有在模块中指定它。除非我试着说,否则这是默默接受的。我希望在>新语句之后出现错误消息。

代码:

 #!/usr/bin/perl
 use strict;
 use warnings;

 use 5.012;
 package People;
 use Moose;
 use namespace::autoclean;
 has 'name' => (is => 'rw');
 __PACKAGE__->meta->make_immutable;

 package main;
 my $friend = People->new( name => 'Peter', age => 20 ); # no error.
 say $friend->name;
 say $friend->age; # here comes the error message.

谢谢!

1 个答案:

答案 0 :(得分:6)

尝试一下:

use MooseX::StrictConstructor;

将age传递给构造函数时会抛出这样的错误:

Found unknown attribute(s) passed to the constructor: age ...