MooseX::OneArgNew(3pm) | User Contributed Perl Documentation | MooseX::OneArgNew(3pm) |
MooseX::OneArgNew - teach ->new to accept single, non-hashref arguments
version 0.005
In our class definition:
package Delivery; use Moose; with('MooseX::OneArgNew' => { type => 'Existing::Message::Type', init_arg => 'message', }); has message => (isa => 'Existing::Message::Type', required => 1); has to => ( is => 'ro', isa => 'Str', lazy => 1, default => sub { my ($self) = @_; $self->message->get('To'); }, );
When making a message:
# The traditional way: my $delivery = Delivery->new({ message => $message }); # or my $delivery = Delivery->new({ message => $message, to => $to }); # With one-arg new: my $delivery = Delivery->new($message);
MooseX::OneArgNew lets your constructor take a single argument, which will be translated into the value for a one-entry hashref. It is a parameterized role with three parameters:
You can apply MooseX::OneArgNew more than once, but if more than one application's type matches a single argument to "new", the behavior is undefined and likely to cause bugs.
It would be a very bad idea to supply a type that could accept a normal hashref of arguments to "new".
Ricardo Signes <rjbs@cpan.org>
This software is copyright (c) 2015 by Ricardo Signes.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
2018-03-31 | perl v5.26.1 |