Hello to all,

i can't understand the follow behaviour:

class Player
  attr_accessor :hand
  def initialize(hand)
    @hand = hand
  end
end

def roba(player)
  p2 = Player.new(player.hand)
  change p2
  print "p2 = "
  p p2
  print "player = "
  p player
end

def change(player)
  player.hand.push(3)
end


p1 = Player.new([2, 3, 4])
roba p1

__END__

output is:
p2 = #<Player:0xb7c4919c @hand=[2, 3, 4, 3]>
player = #<Player:0xb7c491c4 @hand=[2, 3, 4, 3]>


Why the change affects both objects? I want to copy the first object and
work on the copy without affecting the original.

Thanks
-- 
Posted via http://www.ruby-forum.com/.