Sto lavorando attraverso un tutorial in questo momento, e mi piacerebbe capire perché si verifica quanto segue:Perché `<<` `si aggiunge a una stringa di Ruby mentre` + = `no?
original_string = "Hello, "
hi = original_string
there = "World"
hi += there
assert_equal "Hello, ", original_string
original_string = "Hello, "
hi = original_string
there = "World"
hi << there
assert_equal "Hello, World", original_string
Perché +=
non hanno alcun effetto sulla original_string
, e <<
fa? Ero assolutamente certo che anche il secondo caso sarebbe uguale allo "Hello, "
, ma non è così.
hi = original string
nel primo esempio sembra copiare il valore di original_string
in hi
, ma hi = original string
nel secondo esempio che consente di impostare hi
puntare alla stessa stringa original string
. Immagino che dietro le quinte ci sia una sorta di decisione implicita su come copiare il valore o copiare il riferimento ... o qualcosa del genere.