in reply to Perl Moose syntax

I think the latter syntax does make more sense

Why?

Replies are listed 'Best First'.
Re^2: Perl Moose syntax
by Anonymous Monk on Dec 28, 2014 at 03:17 UTC

    Because inside has subroutine you can assign value more clearly.
    like:

    my ($prop_name,$prop_options)=@_

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

        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