JavaFree.org | RubyOnBr.org

Duvidas

Acompanhar Duvidas 3 posts, 2 participantes

Ver Tassio Virginio 28 posts

Porque isso funciona:

???? e isso não !

é uma curiosidade… porque as String´s ele guarda a referencia, e parece que com os Fixnum ele cria novos objetos ?

 
Avatar Fernando Allen 39 posts

Olá Tassio,

Nos dois casos, ambas variáveis fazem referência ao mesmo objeto. Depois de fazer y = x, experimente no irb:

Você verá que tanto para String quanto FixNum você verá que é o mesmo objeto. O que há de diferente então no seu exemplo?

No primeiro caso você está modificando a representação interna do objeto, pedindo para substituir o primeiro caractere por “C”. Esta operação não muda a referência da variável.

No segundo caso, quando você faz y = 200, você está atribuindo um novo objeto à variável y. Lembre-se que no ruby até os valores literais são objetos. Para tirar a dúvida, repita o trecho de código que coloquei aí acima depois de rodar novamente cada um dos seus exemplos. Você verá que no primeiro o object_id é o mesmo e no segundo é diferente.

Agora, se seu primeiro exemplo fosse como abaixo, o comportamento seria igual para os dois:

 
Ver Tassio Virginio 28 posts

Valeu !

:D