perl - 禁止 Moose 类中的非属性参数

标签 perl parameters constructor moose

如果 Moose 的构造函数调用中有额外的参数不是属性,有没有办法死?例如,这个:

package Shoe;
use Moose;
has 'size'  => (is => 'ro', isa => 'Num');
has 'color' => (is => 'ro', isa => 'Str', default => 'brown');
1;

会死在
my $sneaker = Shoe->new(size => 11, colour => 'white');

因为colour不是 Shoe 的属性.

我可以发誓我已经看到了一个模块或其他东西可以做到这一点,但我找不到它。

最佳答案

对我来说作品MooseX::StrictConstructor :

package Shoe;
use Moose;
use MooseX::StrictConstructor; # <-- that's all what need
has 'size'  => (is => 'ro', isa => 'Num');
has 'color' => (is => 'ro', isa => 'Str');
1;

package main;
my $sneaker = Shoe->new(size => 11, colour => 'white'); #blows up

关于perl - 禁止 Moose 类中的非属性参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25860844/

相关文章:

c++ - 非类型引用参数可以在运行时修改,是否意味着模板可以在运行时实例化?

C程序中的命令行参数?

c# - 关于C#构造函数的问题

c++ - C++中构造函数的默认访问是什么

perl - 命令行参数变量@ARGV

mysql - 从 pop3 获取(新)邮件并添加到 mysql 数据库

perl - 如何在字符串中重复一个字符n次?

windows - 什么会导致 Perl 系统调用开始失败?

CSS类名参数?

java - 能够创建带有 protected 构造函数的 var 吗?