D
Daniele Antani
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
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