Ruby Zugriff äußere Variablen in verschachtelte Funktion
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 method
x‘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?
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