When programming in a language you hate, don't take naming arguments for granted. It could be worse: you could be programming in Perl, where all arguments come in a flattened array.
When programming in a language you hate, don't take naming arguments for granted. It could be worse: you could be programming in Perl, where all arguments come in a flattened array.
sub named_params {
my %P = @_; # named params in hash %P
my $foo = $P{bar} + $P{baz};
return $foo * $P{multiplier};
}
my $rvalue = named_params( foo => 1, bar => 2, multiplier => 3 );
Or, some people prefer to just pass in a hash reference: sub named_params_hashref {
my $P = shift;
my $foo = $P->{bar} + $P->{baz};
return $foo * $P->{multiplier};
}
my $rvalue = named_params_hashref({
foo => 1,
bar => 2,
multiplier => 3,
});
But of course, why bother letting common sense, and a single line of code stand in the way of your chance to deliver a pithy remark?>>where all arguments come in a flattened array
That is optional, through the power of CPAN (and kbenson's methods, of course). Examples of alternatives:
http://search.cpan.org/~barefoot/Method-Signatures-20130222/...
http://search.cpan.org/~flora/MooseX-Declare-0.35/lib/MooseX...
http://search.cpan.org/~ether/MooseX-Method-Signatures-0.44/...
(Depending on if you use Moose or not.)
One of the cool parts of Perl is that the language is extensible, that is why it e.g. has a better OO than Python, Ruby, etc. (Or simple typing of parameter arguments, see the modules above. Or why MooseX::Declare has ... ah, look yourself, troll.)
Edit: The possibility to extend your environment is generally seen as a good thing, unless you believe in cleanliness of bloo... languages for ideological reasons.
You seem to be proving what I said earlier[1]. You think you understand what's going on, but in truth you don't. Feel free to continue making assertions regarding things you don't know, I can't stop you, but be aware that to do so is dishonest.