/ / Non consentire parametri non attributo in una classe Moose - perl, parametri, costruttore, alce

Disabilitare i parametri non-attributo in una classe Moose: perl, parametri, costruttore, alci

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 № 1

Per 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