Ruby обращается к внешним переменным во вложенной функции
Вопрос
Я уверен, что для этого есть простой ответ; Я просто не могу найти это. Я сделал вложенную функцию в Ruby, и у меня были проблемы с доступом к переменным из внешней функции внутри внутренней функции:
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
Я получаю: NameError: неопределенная локальная переменная или метод
x 'для main: Object`
Аналогичный код Python работает:
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
Так как мне сделать то же самое в Ruby?
Решение
Насколько я знаю, определение именованной функции внутри функции не дает вам доступа ни к каким локальным переменным.
Вместо этого вы можете использовать Proc:
def foo(x)
bar = lambda do
puts x
end
bar.call
42
end
foo(5)
Не связан с StackOverflow