C'è un modo per morire se ci sono parametri extra in una chiamata del costruttore in Moose che non sono attributi? Ad esempio, questo:
package Shoe;
use Moose;
has "size" => (is => "ro", isa => "Num");
has "color" => (is => "ro", isa => "Str", default => "brown");
1;
morirebbe
my $sneaker = Shoe->new(size => 11, colour => "white");
perché colour
non è un attributo di Shoe
.
Potrei giurare di aver visto un modulo o qualcosa per farlo ma non riesco a trovarlo.
risposte:
6 per risposta № 1Per me funziona 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