У меня есть следующее:
class Test
@@a = 10
def show_a()
puts "a: #{@@a}"
end
class << self
@@b = '40'
def show_b
puts "b: #{@@b}"
end
end
end
Почему следующая работа:
Test.instance_eval{show_b}
b: 40
=> nil
Но я не могу напрямую получить доступ к @@b
?
Test.instance_eval{ @@b }
NameError: uninitialized class variable @@b in Object
Аналогично, следующие работы
t = Test.new
t.instance_eval{show_a}
a: 10
=> nil
но следующие ошибки
t.instance_eval{ @@a }
NameError: uninitialized class variable @@a in Object
Я не понимаю, почему я не могу получить доступ к переменным класса непосредственно из блоков instance_eval
.