Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re: Re: (tye)Re2: A Real Closure

by petral (Curate)
on Jul 13, 2001 at 04:22 UTC ( #96244=note: print w/replies, xml ) Need Help??

in reply to Re: (tye)Re2: A Real Closure
in thread Unusual Closure Behaviour

Ok, I'll try (though see John M. Dlugosz's answer just above):
> perl -lwe'sub k{my $x; sub j{++$x}; return sub{++$x} } k(); $a=\&j; k(); $b=\&j; $c=k(); $d=k(); print"a b c d"; $,=$"; print &$a, &$b, &$c, &$d for 0..2' Variable "$x" will not stay shared at -e line 1. a b c d 1 2 1 1 3 4 2 2 5 6 3 3 >
That is a and b are just two references to the same function and its (compiled-in) variable. c and d refer to different functons (with the same code) each with its own (run-time declared) variable.

c and d are closer to what is referred to elsewhere as closures. (Not everywhere else, the original usage in set theory is yet another thing.)

update Obviously I didn't reload the page before submitting. I thought tye had left, so it would be safe to try to answer without being compared to his much more complete answers. I'll leave mine up anyway, in the hope that repetition aids understanding.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://96244]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (4)
As of 2016-12-05 22:24 GMT
Find Nodes?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:

    Results (94 votes). Check out past polls.