Why is it that if I create an array, a = [1,2,3]
then do b = a
then b[0] = 99
why is that a[0] magically becomes 99 too?
how can I preserve 'a' after I make a copy of it, then change that new
copy?
···
--
Posted via http://www.ruby-forum.com/.
Why is it that if I create an array, a = [1,2,3]
then do b = a
then b[0] = 99
why is that a[0] magically becomes 99 too?
how can I preserve 'a' after I make a copy of it, then change that new
copy?
--
Posted via http://www.ruby-forum.com/.
I just found method dup.
So I can do a = [1,2,3]
b = a.dup
b[0] = 99
and then a and be will not be the same.
Thanks.
--
Posted via http://www.ruby-forum.com/.
a = [1,2,3]
a.object_id #=> 604244548
b = a
b.object_id #=> 604244548
Your two variables are referring to the same object ... or another way of saying that is all variables in ruby hold a reference to an object. To get a copy of your array ...
b = a.dup
b.object_id #=> 604262918
Welcome to ruby!
Blessings,
TwP
On Jan 16, 2009, at 1:06 PM, Jason Lillywhite wrote:
Why is it that if I create an array, a = [1,2,3]
then do b = a
then b[0] = 99why is that a[0] magically becomes 99 too?
Why is it that if I create an array, a = [1,2,3]
then do b = a
then b[0] = 99why is that a[0] magically becomes 99 too?
b = a points to the same area of memory as a for lists.
how can I preserve 'a' after I make a copy of it, then change that new
copy?
b = a.clone
Should copy the list.
On Sat, Jan 17, 2009 at 05:06:21AM +0900, Jason Lillywhite wrote:
--
Posted via http://www.ruby-forum.com/\.