BasicObject.class_eval do
def instance(ins)
eval "@#{ins}=#{ins}", binding
end
end
Это код. Я хочу, чтобы это было в следующем коде, создайте новую переменную экземпляра, bar, внутри класса Foo. Что я получаю после выполнения этого кода:Почему это возвращает ошибку?
class Foo
bar = 3
end
Foo.instance(:bar)
является:
NameError: undefined local variable or method `bar for Foo:Class
from /Users/Solomon/Desktop/Ruby/instance.rb:3:in `instance'
from /Users/Solomon/Desktop/Ruby/instance.rb:3:in `eval'
from /Users/Solomon/Desktop/Ruby/instance.rb:3:in `instance'
Почему это происходит.
По той же причине, что и в предыдущем вопросе - «бар» не существует после обработки декларации класса. –