Czy w Rubim nie ma możliwości dynamicznego zdefiniowania zmiennej lokalnej w bieżącym kontekście? [duplikować]

To pytanie ma już tutaj odpowiedź:

Jak dynamicznie tworzyć zmienną lokalną? 4 odpowiedzi

Zastanawiam się, czy istnieje metoda, która pozwoli mi dynamicznie zdefiniować wcześniej niezdefiniowaną zmienną w bieżącym kontekście. Na przykład:

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

Innymi słowy, biorąc pod uwagę tofoo jest niezdefiniowane, szukam dowolnego kodu, który pozwoliłby mi zdefiniować zmienną lokalnąfoo bez użyciafoo zmienna (np. gdybym miał inną zmiennąbar której wartość wynosiła:foo i musiałem polegać na tym, aby ustawić wartośćfoo).

Wygląda na to żeeval('foo = 1') lubeval('foo = 1', binding) lub w Ruby 2.1,binding.local_variable_set(:foo, 1) wszystkie są równoważne:

1.times do
  foo = 1
end

innymi słowy, ustawiająfoo w kontekście aNowy kontekst lokalny, tak że wartość jest niedostępna poza tym kontekstem.

Czy to, co chcę zrobić, jest możliwe?

Aktualizacja: To pytanie nie dotyczy konkretnego kontekstu zmiennej lokalnej (moduł / klasa, metoda, proc, blok itp.). Byłabym zainteresowana definitywnym poznaniem dowolnego kontekstu, w którym można lub nie można tego zrobić.

questionAnswers(3)

yourAnswerToTheQuestion