3

私は Moose で最初の一歩を踏み出しましたが、次の質問があります。モジュールで指定していない属性を割り当てることができるようです。この属性にアクセスしようとすると、エラー メッセージが表示されます。モジュールで指定されていない属性の割り当てを防ぐにはどうすればよいですか? 以下の例では、モジュールでこれを指定していませんが、age を割り当てています。これは私が言おうとしない限り、黙って受け入れられます。エラーメッセージが ->new ステートメントの後に来ることを望みます。

コード:

 #!/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.

ありがとうございました!

4

1 に答える 1

6

これを試してください:

use MooseX::StrictConstructor;

age をコンストラクターに渡すと、次のようなエラーがスローされます。

Found unknown attribute(s) passed to the constructor: age ...
于 2013-02-17T15:41:45.777 に答える