in reply to Re^2: Perl Moose syntax
in thread Perl Moose syntax

What's wrong with my ($prop_name,%prop_options) = @_;? Dereferencing a $prop_options would mean a bit more typing.

Replies are listed 'Best First'.
Re^4: Perl Moose syntax
by Anonymous Monk on Dec 28, 2014 at 05:44 UTC

    Oh sorry what I meant is actually:

    has 'friends' => { is => 'rw', isa => 'Array', default => () };

    Anyway the reason I said the latter syntax makes more sense is because I saw the latter syntax more often. For example In https://metacpan.org/pod/HTML::Template#TMPL_LOOP:

    $template->param( EMPLOYEE_INFO => [{name => 'Sam', job => 'programmer'}, {name => ' +Steve', job => 'soda jerk'}] ); print $template->output();

    This code uses reference(array) because of clarity and I think most subroutines uses this syntax.
    However this line

    has 'friends' => ( is => 'rw', isa => 'Array', default => () );

    is same as:

    has 'friends',is => 'rw', isa => 'Array', default => ();

    which is not clear and as for me that looks just weird.
    But when using reference, you don't have to use awkward arrow between 'friends' and 'is'

    has 'friends',{ is => 'rw', isa => 'Array', default => () };

    Of course, not using reference parameter saves some typing but that saves typing of Moose's author, not of us. And using reference is also not a big deal.Clarity is more important

      These are all exactly equivalent:

      has 'friends' => ( is => 'rw', isa => 'Array', default => () ); has friends => ((is => 'rw'), (isa => 'Array'), (default => ())); has friends => is => 'rw', isa => 'Array', default => (); has friends => is => rw => isa => Array => default => (); has "friends", "is", "rw", "isa", "Array", "default", (); has qw/friends is rw isa Array default/, ();

      Moose has just chosen to write things the way they do, but you're free to choose any of the above, whichever is clearest to you - that's a lot of freedom! It's just a matter of taste, and arguing about it is just like arguing about whether your sandwich tastes better depending on if it's sliced diagonally, horizontally or vertically ;-)

        Which is, by the way, exactly equivalent to
        has qw< friends is rw isa Array default >;
        لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ