Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Are prototypes evil?

by Aristotle (Chancellor)
on Sep 02, 2002 at 22:19 UTC ( #194645=note: print w/ replies, xml ) Need Help??


in reply to Are prototypes evil?

Prototypes are one of those things that you shouldn't use, unless you understand why you shouldn't use them. Consider

sub foo ($$) { print join " / ", map "'$_'", @_; } my @x = qw(a b); foo(@x);
This will print '2'. Not 'a' / 'b' as one might expect. Prototypes in Perl aren't. They would probably best be called "context coercion templates". A $ will coerce anything into a scalar. List/hash flattening no longer applies. When using a single ($), it's not too bad, but if you use prototypes for more parameters, you can easily surprise users of that function (including yourself). The only "prototype" I'd seriously consider is &, which lets me pass a bare(!) BLOCK that implicitly becomes a subref to a closure to the function.

Makeshifts last the longest.


Comment on Re: Are prototypes evil?
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://194645]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2014-09-21 14:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (172 votes), past polls