Rubi acesso a variáveis ??externas em função aninhada
Pergunta
Eu tenho certeza que há uma resposta simples para isso; Eu só não consigo encontrá-lo. Fiz uma função aninhada em Ruby, e que estava a ter dificuldade em aceder variáveis ??da função exterior dentro da função interna:
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
eu recebo: NameError: undefined local variable or method
x' para principal: Object`
Os análogos obras código Python:
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
Então, como posso fazer a mesma coisa em Ruby?
Solução
Tanto quanto eu sei, a definição de uma função chamada dentro de uma função não lhe dá acesso a todas as variáveis ??locais.
O que você pode fazer é em vez usar um Proc:
def foo(x)
bar = lambda do
puts x
end
bar.call
42
end
foo(5)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow