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 integ=
er
>>> 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 d=
on'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
>
> =A0 =A0def m(b)
> =A0 =A0 =A0b =3D Object.new
> =A0 =A0 =A0p b.object_id
> =A0 =A0end
>
> =A0 =A0a =3D Object.new
> =A0 =A0m(a)
> =A0 =A0p a.object_id
>
> 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 =3D ...
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.


--=20
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.