Генерирует ли присваивание новую копию объекта?

Все переменные и константы указывают на некий объект. (Исключением являются неинициализированные локальные переменные, которые не указывают ни на что. Если их использовать, это вызовет исключение NameError.) Когда вы присваиваете что-то переменной или инициализируете константу, вы устанавливаете, на какой объект указывает переменная или константа.

Поэтому присваивание само по себе никогда не создает новую копию объекта.

Однако некоторые особые случаи требуют дополнительного разъяснения. Объекты классов Fixnum, NilClass, TrueClass и FalseClass содержатся непосредственно в переменных - нет никаких ссылок на объект. Переменная, содержащая число 42 или константу true, на самом деле содержит значение, а не ссылку. Поэтому присваивание порождает копии объектов этих типов.

Вход для пользователей