Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Ruby copia matriz

Olá, gostaria de saber como faço uma copia de uma matriz em ruby, mas uma copia mesmo, não uma variável que aponta para o mesmo lugar só que com nome diferente. De preferencia não fazendo manualmente com loops, mas com uma função. Procurei bastante mas não encontrei nada.

3 respostas

Oi Bruno, exitem duas formas de fazer isso. Você pode usar o método dup ou o método clone em qualquer objeto Ruby.

Há uma diferença pequena entre estes dois métodos, a qual você pode ter detalhes na propria documentação: http://ruby-doc.org/core-2.3.1/Object.html#method-i-dup

Acredito que mais especificamente, no seu caso, seja mais recomendado usar o clone.

Espero ter ajudado, bons estudos...

Eu usei ambos, mas nenhum fez o que eu queria.

dup: http://prnt.sc/c4gvw5

clone: http://prnt.sc/c4gu7g

Gostaria que ao alterar uma matriz, a outra ficasse intacta.

solução!

Oi Bruno, pelo que li em um livro aqui, você precisa serializar o objeto que quer duplicar e depois carrega-lo como outra instancia. Algo como

A serialização pode ser feita com o Marshal. Faça o teste e depois me diga se deu certo, ok?

objA = [[1],[2]]
objB = Marshal.load(Marshal.dump(ObjA))