Shannon Fang <xrfang / hotmail.com> wrote:
> Another problem about reference is that,
> if a is an object, let b=a, then b is a copy of the object or a pointer
> to a? I encountered the following problem

> a=b=c=Array.new
> d=e=f=""

> In my program, if I modify a, b and c will be affected, in another word,
> a, b, c point to the same Array. while I modify d, e and f are not
> affected, which means, strings are assigned by value... what will happen
> if I write d=e=f=String.new?

> Since everything in Ruby is object, I don't understand why String and
> Array are different...

> Shannon

Hi Shannon,

I don't think your statement above is right.  In Ruby, if you have

   a = b = c = ... = anything   # Array.new, or "", or String.new, or else

then if you call a "!" method on any of the above variables, then all the
variables are "affected" because in essence, there is only one single
object, which is referred to by so many variables.

So using your own terminology/concept, in b=a, then b is a copy of the
"pointer" to a, and not a copy of the object pointed to by a.  Please see
also http://www.glue.umd.edu/~billtj/ruby.html#objects.

Regards,

Bill