7 ms·
What one can learn from Perl: When programming in a language you hate, don't take naming arguments for granted. It could be worse: you could be programming in
by PySlice 13y ago
What one can learn from Perl:
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.
- kbenson 13y agoThis is really not much of an issue, if you bother to learn the language. If you don't, then yes, things will be confusing. 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?
- berntb 13y ago"PySlice" with karma 25 is probably your trolling account. If not, ASK about stuff you have no clue about. It is better than looking like a little troll kid, having "fun" lowering the quality of HN by stupid language war comments. >>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/lib/Method/Signatures.pm http://search.cpan.org/~barefoot/Method-Signatures-20130222/... http://search.cpan.org/~flora/MooseX-Declare-0.35/lib/MooseX/Declare.pm http://search.cpan.org/~flora/MooseX-Declare-0.35/lib/MooseX... http://search.cpan.org/~ether/MooseX-Method-Signatures-0.44/lib/MooseX/Method/Signatures.pm 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.)
- nijk 13y ago"the" language is then more of a loosely couples family of languages.
- berntb 13y agoNot half as much as any Lisp variant with good macros. 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.
- tudorconstantin 13y agojust like in javascript - oh wait, that is the shiny new trend in programming, there it can't be bad thing the lack of named params.
- nijk 13y agoThat is a lie. Some of the arguments are provided as global variables like $_, (no need to remember its name, since its value will be implicitly used whenever you omit a necessary argument) whose value is decided by something akin to Clippy choosing what seems most handy.
- Mithaldu 13y ago$_ is very clearly and sharply defined. Only because you never took even a slightly look at the documentation does not mean you should just make up things. :)
- kbenson 13y ago$_ is not global, it's lexical. It's value is not haphazardly chosen, it is the topic for structures that topicalize. 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. [1]: https://news.ycombinator.com/item?id=5657901 https://news.ycombinator.com/item?id=5657901