in reply to Re^4: What's wrong with Perl 6?
in thread What's wrong with Perl 6?

An almost complete aside from the purpose of this thread, but it comes as a direct result of seeing a little real-world(ish) Perl 6 code posted here.

I can see that pieces of code like this from above are likely to be quite common in Perl 6 class implementations:

($.name, $.rank, $.pref) = ($name, $rank, $cereal_pref);

Ie. The assignment of batches of named formal parameters to instance variables with the same (similar, the $.pref/$cereal_pref disparity not withstanding) names. And vice versa.

Is there any shorthand available for this kind of 'batch assignment' from method parameters to instance variables?

I was thinking along the lines of $.= ( $name, $rank, $pref );

and say $= ( $.name, $.rank, $.pref );

Is there any mileasge in that?


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

Replies are listed 'Best First'.
Re^6: What's wrong with Perl 6?
by duff (Parson) on May 14, 2007 at 13:28 UTC

    IIRC, naming your method parameters as if they were instance variables accomplishes that trick:

    method foo($.name,$.rank,$.pref) { ... } # and then later ... $obj.foo('Scott', 'Vicar', '???'); # sets the instance vars
    Though pulling out the auto-magic into something you can do directly is interesting.

    Check S12 in any case for the definitive answer.