Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Rosetta Code Error or $n // 100

by Perlbotics (Chancellor)
on Mar 24, 2019 at 20:15 UTC ( #1231623=note: print w/replies, xml ) Need Help??


in reply to Rosetta Code Error or $n // 100

When continued_fraction($x,$y,$z) is called, the parameters $x, $y, $z are assigned to the list @_ which is visible locally inside the sub and can be addressed in the usual way like $_[0], $_[1]...
Here, @_[0,1] is an array-slice equivalent to the list ($_[0], $_[1]).

BTW: Accessing @_ is "call-by-reference" style. Assigning to i.e $_[0] inside the sub would change callers $x in the example above. Usually, you would create a local copy, i.e. my (@args) = @_;. Accessing @_ might be used here for speed-optimisation or because of bad style?

Perl historically had no strict function/sub signatures, so you can pass any number of arguments without Perl complaining - that feature was added recently (Perl 5.20, experimental).

$n = $_[2] // 100; is the same as $n = defined($_[2]) ? $_[2] : 100;
So, if the third - obviously optional parameter is given, it is used. If not, the default value 100 is assigned to $n.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (6)
As of 2019-11-20 19:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Strict and warnings: which comes first?



    Results (101 votes). Check out past polls.

    Notices?