В Ruby нет способа динамически определить локальную переменную в текущем контексте? [Дубликат]

На этот вопрос уже есть ответ здесь:

Как динамически создать локальную переменную? 4 ответа

Мне интересно, есть ли метод, который позволит мне динамически определять ранее неопределенную переменную в текущем контексте. Например:

foo # => NameError: undefined method or local variable ...
# Some method call which sets foo = 1 in the local context
foo # => 1

Иными словами, учитывая, чтоfoo не определено, я ищу любой код, который позволил бы мне определить локальную переменнуюfoo без использованияfoo переменная (например, если у меня была другая переменнаяbar чья ценность была:foo и я должен был положиться на это, чтобы установить значениеfoo).

Кажется, чтоeval('foo = 1') или жеeval('foo = 1', binding) или в Ruby 2.1binding.local_variable_set(:foo, 1) все эквивалентны:

1.times do
  foo = 1
end

другими словами, они устанавливаютfoo в контекстеновый локальный контекст, такой, что значение недоступно за пределами этого контекста.

Возможно ли то, что я хочу сделать?

Обновление: этот вопрос не относится к какому-либо конкретному контексту локальной переменной (модуль / класс, метод, процедура, блок и т. Д.). Мне было бы интересно узнать окончательно любой контекст, где это можно или нельзя сделать.

Ответы на вопрос(3)

Ваш ответ на вопрос