Почему это не работает, если в Ruby все является объектом?

Учитывая, что в языке программирования Ruby все называется объектом, я Предполагается, что передача аргументов методам осуществляется по ссылке . Однако этот небольшой пример ниже меня озадачивает:

$string = "String"

def changer(s)
  s = 1
end

changer($string)

puts $string.class
String
 => nil

Как вы можете видеть, исходный Объект не был изменен, я хочу знать , почему , а также, как я могу добиться желаемого поведения, т.е. Получение от метода фактического изменения объекта, на который ссылается его аргумент.

12
задан ROMANIA_engineer 16 October 2017 в 20:14
поделиться