Perl/MooseX::StrictConstructor
De Astillas.net
< Perl
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 $