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

前端之家收集整理的这篇文章主要介绍了perl – 禁止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');

因为颜色不是鞋子的属性.

我可以发誓我已经看过一个模块或者其他什么来做这件事,但我找不到它.

解决方法

对我来说工作 MooseX::StrictConstructor

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

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

猜你在找的Perl相关文章