May 28 2009

Copiando um Hash em ruby

Pazzo

Seguindo a idéia de um post anterior.
Em ruby, se eu possuo um hash a e quero copiá-lo para uma variável b e modificá-la sem alterar a, a primeira idéia seria

a = {:a => "1, 2 ,3"}
b = a

Porém, quando eu fizer alguma alteração em b, a também será alterada:

b[:a] = "4,5,6"
puts a[:a]
> "4,5,6"

Solução:

b = a.dup

Simples e limpo.