Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re^3: Lexical closures

by GrandFather (Sage)
on Oct 25, 2008 at 20:51 UTC ( #719554=note: print w/replies, xml ) Need Help??


in reply to Re^2: Lexical closures
in thread Lexical closures

No. The confusion is that Perl effectively closes over the value of the variable, not a reference to the variable.

All languages that I know where you can declare a variable locally to the scope of a block (including a block for a loop) effectively set up a new stack frame on each entry to the block, but the loop variable is outside that block or it couldn't maintain its contents from one iteration to the next.


Perl reduces RSI - it saves typing

Replies are listed 'Best First'.
Re^4: Lexical closures
by JavaFan (Canon) on Oct 25, 2008 at 23:03 UTC
    The confusion is that Perl effectively closes over the value of the variable, not a reference to the variable.
    sub make_funcs { my $val = shift; (sub {$val * $val}, sub {$val++}) } my($f3, $i3) = make_funcs(3); my($f5, $i5) = make_funcs(5); say $f3->(); say $f5->(); $i3->(); say $f3->(); say $f5->(); __END__ 9 25 16 25
    I can't explain my results in combination with your claim.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (6)
As of 2019-07-18 15:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?