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

标签 perl moose

我开始使用 Moose,我有以下问题。 似乎我可以分配我没有在模块中指定的属性。如果我尝试访问此属性,则会出现错误消息。我怎样才能阻止模块中未指定的属性的分配?在下面的示例中,我指定了年龄,但我没有在模块中指定它。除非我试图说出来,否则这是默默接受的。我希望该错误消息出现在 ->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.

谢谢!

最佳答案

试一试:

use MooseX::StrictConstructor;

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

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

关于perl - Moose:通过创建对象检查属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14921728/

相关文章:

perl - 如何通过 OTRS 中的 Web 服务(SOAP 或 REST)将配置项链接/获取到工单

perl - 在 Moose 中创建一个 Web::Scraper 对象作为类属性

perl - 如何使用与主脚本在同一文件中定义的 Moose 类?

perl - 观察驼鹿属性的变化

perl - Moose - 在第二个属性中保留一个属性的原始值

Perl/Moose - 如何动态选择方法的特定实现?

perl - 如何将参数传递给处理每个文件的 File::Find 子例程?

perl - 使用 find 命令在文本编辑器中打开多个文件

perl - 制作简单的 Perl 配置文件的最佳方法是什么?

perl - autodie-pragma 对编码有影响吗?