Вы присваиваете значение локальной переменной при первом присваивании:
local = 1
local1 + local # NameError: undefined local variable or method `local1' for main:Object
Переменные класса похожи, если вы используете их без инициализации, вы получите ошибку:
class A
@@a
end
# NameError: uninitialized class variable @@a in A
Экземпляр классапеременные и переменные класса по умолчанию nil
:
class A
def self.a
@a
end
def a
@a
end
end
> A.a
#=> nil
> A.new.a
#=> nil