On Fri, Nov 12, 2010 at 12:38 PM, Xavier Noria <fxn / hashref.com> wrote: > On Fri, Nov 12, 2010 at 12:25 PM, Josh Cheek <josh.cheek / gmail.com> wrote: > >> On Fri, Nov 12, 2010 at 3:01 AM, Xavier Noria <fxn / hashref.com> wrote: >> >>> When the function is invoked the pointer is *copied*, that is, an integer >>> value is copied and linked to a local variable. The exact same thing >>> happens if the parameter is int i. >>> >> >> The exact same thing also happens with a reference (at least in C++, I don't >> know anything about Perl). >> >> >>> The pointer value is copied into the number variable (pass by value). >>> You can be certain the caller sees the exact same pointer when >>> the function call returns. >>> >>> >> Please re-read your blog with this in mind, since what you right here in >> this quote are calling "pass by value" you, in your blog, call >> "pass-by-reference". >> >> http://img193.imageshack.us/img193/6480/refl.jpg > > No, no. If Ruby did what the diagram shows the program > > ¨Âåæ í¨â© > ¨Â Ïâêåãô®îå÷ > ¨Â â®ïâêåãôßé> ¨Âîä > > ¨Â Ïâêåãô®îå÷ > ¨Â¨á> ¨Â á®ïâêåãôßé> > would print the same number because a and b would be pointing to the > same storage area. They aren't. > > Are you sure Xavier? I am afraid that in def x b b = ... you brake the link as shown in the diagram (somehow as having a local variable shadowing the param) because if you made def x b b << "hello" the diagram seems correct, or is it I who misses something here? Cheers R. -- The 1,000,000th fibonacci number contains '42' 2039 times; that is almost 30 occurrences more than expected (208988 digits). N.B. The 42nd fibonacci number does not contain '1000000' that is almost the expected 3.0e-06 times.