Frage

Ich bin sicher, dass eine einfache Antwort für diese gibt es; Ich kann einfach nicht scheinen, um es zu finden. Ich habe eine verschachtelte Funktion in Ruby, und ich habe Schwierigkeiten, Variablen aus der äußeren Funktion innerhalb der inneren Funktion zuzugreifen:

def foo(x)
  def bar
    puts x
  end
  bar
  42
end

foo(5)

ich: NameError: undefined local variable or methodx‘für Haupt: Object`

Der analoge Python Code funktioniert:

def foo(x):
  def bar():
    print x
  bar()
  return 42

foo(5)

Wie mache ich die gleiche Sache in Ruby?

War es hilfreich?

Lösung

Soweit ich weiß, in einer Funktion eine benannte Funktion definiert, nicht geben Sie alle lokalen Variablen zugreifen zu können.

Was können Sie stattdessen tun ist, einen Proc verwenden:

def foo(x)
  bar = lambda do
    puts x
  end
  bar.call
  42
end

foo(5)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top