Może ktoś wyjaśnić zachowaniePrzypisanie ciągu za pomocą odnośnika/kopii?
Scenariusz-1
str = "hello"
str1 = str
puts str #=> hello
puts str1 #=> hello
str1 = "hi"
puts str1 #=> hi
puts str #=> hello
Tutaj, zmieniając wartość str1
nie ma wpływu na wartość str
.
Scenariusz-2
str = "hello"
str1 = str
str1.gsub! "hello", "whoa!"
puts str1 #=> whoa
puts str #=> whoa
shoudn't efekt gsub!
tylko str1
? Dlaczego zmienia się str
? Jeśli str1
po prostu zawiera odniesienie do str
, dlaczego ta wartość nie uległa zmianie w Scenariuszu-1?
Bicie mnie do tego ... +1 – Salil
Dobrze napisana odpowiedź. –
Czy to prawda wszystko? Wszystko jest przedmiotem i wszystko jest przypisane przez odniesienie? W tym inne rzeczy, które zwykle są prymitywami w innych językach, takich jak liczby całkowite lub zmiennoprzecinkowe? –