У вас уже есть ссылка на числовое значение, просто операция, которую вы выполняете с ним, генерирует новое числовое значение вместо изменения его собственного значения.
Для практичности можно сказать, что c
содержит ссылку на число 1
(хотя между Fixnum
и Bignum
есть небольшая разница в реализации). Для c += 1
вы фактически делаете c = c + 1
, а оператор +
для числа фактически возвращает новый номер. Поэтому переменной c
присваивается ссылка на новый номер.
Это будет другой случай, если есть метод, который может изменить значение самого объекта. Например, в String
оператор <<
изменяет значение объекта:
h = {"a" => "foo"}
b = h["a"]
b << 'bar'
puts b # foobar
puts h # {"a"=>"foobar"}
Но в вашем случае это Integer
, и изменить его числовое значение невозможно.