Perl/MooseX::StrictConstructor

De Astillas.net
Módulo MooseX::StrictConstructor
Versión 0.10
Uso Programación orientada a objetos
Propósito Verifica que en la creación de un objeto Moose no se pasen valores que no correspondan con atributos definidos en la clase.


Ejemplo de código

#!/usr/bin/perl

use Modern::Perl;

package MyPackage;
use Moose;
use MooseX::StrictConstructor;

has 'name' => ( is => 'rw', isa => 'Str' );
has 'age' => (is => 'rw', isa => 'Int' );

no Moose;

package main;

my $obj = MyPackage->new( name => q(Laura), age => '8', tag => 'meloncilla' );

say $obj->name;
say $obj->age;

exit 0;

que al ejecutarlo produce:

 $ perl snippets/moose-strict.pl
 Found unknown attribute(s) init_arg passed to the constructor: tag at /usr/share/perl5/MooseX/StrictConstructor/Role/Object.pm line 24
         Class::MOP::Class:::after('MyPackage=HASH(0x2ae0aa0)', 'HASH(0x20c3d48)') called at /usr/lib/perl5/Class/MOP/Method/Wrapped.pm line 61
         Class::MOP::Method::Wrapped::__ANON__('MyPackage=HASH(0x2ae0aa0)', 'HASH(0x20c3d48)') called at /usr/lib/perl5/Class/MOP/Method/Wrapped.pm line 89
         Class::MOP::Class::__ANON__::SERIAL::2::BUILDALL('MyPackage=HASH(0x2ae0aa0)', 'HASH(0x20c3d48)') called at /usr/lib/perl5/Moose/Meta/Class.pm line 278
         Moose::Meta::Class::new_object('Moose::Meta::Class=HASH(0x2a451b0)', 'HASH(0x20c3d48)') called at /usr/lib/perl5/Moose/Object.pm line 25
         Moose::Object::new('MyPackage', 'name', 'Laura', 'age', 8, 'tag', 'meloncilla') called at snippets/moose-strict.pl line 16
$