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 methodx' 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?

Foi útil?

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
scroll top