JavaFree.org | RubyOnBr.org

Duplicar o valor do objeto na memoria

Acompanhar Duplicar o valor do objeto na memoria 4 posts, 4 participantes

Avatar joao e o pe ... 64 posts

Olá, gostaride saber como faço para duplicar um objeto, ou seja, ao invés de eu ter uma putra referencia do mesmo objeto eu quero duplicá-lo

abraço
Joao

 
Avatar nofxx 278 posts

x = 10
y = x.dup

“dup”

 
Avatar Fernando Luizao 329 posts

Ou Object#clone

x = 10
y = x.clone

Para estruturas complexas podem acontecer alguns problemas, como em relacionamentos do ActiveRecord por exemplo, os relacionamentos não são clonados diretamente.

 
Avatar Edson Lopes 3 posts

Complementando o que o Nofxx falou, agora usando o exemplo do tutorial do Eustáquio (que estou lendo nesse momento ;-P ):

Para ter resultados distintos entre as variáveis, baseando o valor de uma na outra, teríamos que fazer:


[taq@~]irb
irb(main):001:0> my_nick = “TaQ”
=> “TaQ”
irb(main):002:0> my_nick_copy = my_nick.dup
=> “TaQ”
irb(main):003:0> my_nick[ 0 ] = ’S’
=> “S”
irb(main):004:0> puts my_nick
SaQ
=> nil
irb(main):005:0> puts my_nick_copy
TaQ
=> nil
irb(main):006:0>

O método dup duplica o objeto, criando uma nova cópia, que foi atribuída à variável my nick copy.
Então, quando trocamos o primeiro caracter de my nick, estamos alterando somente ela e não mais
my nick copy junto.