Ответ 1
Насколько я знаю, определение именованной функции внутри функции не дает вам доступа к каким-либо локальным переменным.
Вместо этого вы можете использовать Proc:
def foo(x)
bar = lambda do
puts x
end
bar.call
42
end
foo(5)
Я уверен, что для этого есть простой ответ; Я просто не могу найти его. Я сделал вложенную функцию в Ruby, и у меня возникли проблемы с доступом к переменным из внешней функции внутри внутренней функции:
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
Я получаю: NameError: undefined local variable or method
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)