Аргументы передаются методам по ссылке или по значению?

Может ли кто-нибудь расширить, исправить или проверить то, что, как мне кажется, происходит, когда вы передаете аргументы методу в Ruby. Являются ли какие-либо из этих пунктов неправильными? Может быть, я упустил какие-то детали?

  • Все в Ruby является объектом.
  • Переменные - это ссылки на объекты
  • (При передаче переменной в метод): Параметр в методе, который ловит переменную, является локальной переменной этого метода. Параметр (локальная переменная) теперь также имеет ссылку на тот же объект.
  • Я могу изменить объект (на месте), и это изменение сохранится после выхода из области видимости метода. Любые переменные, ссылающиеся на этот объект вне области действия метода, будут отражать, что объект был изменен.
  • Новое присвоение этому параметру (локальной переменной) не изменяет исходный объект, поэтому любые ссылки на него при выходе метода из области видимости останутся неизменными.
  • Если я передаю в метод переменную, которая ссылается на целое число, то после выхода метода из области видимости у меня нет никакой возможности сделать так, чтобы эта переменная ссылалась на новое целое число.

Есть ли способ иметь метод, который принимает в качестве одного из своих параметров Integer, выполняет некоторые действия и, возможно, в качестве побочного эффекта изменяет значение, причем это изменение отражается после выхода из метода. Возможно, я просто не думаю "по-рубиновски".

10
задан Andrew Grimm 22 April 2012 в 23:21
поделиться