Ruby che accede alle variabili esterne nella funzione nidificata
Domanda
Sono sicuro che ci sia una risposta semplice per questo; Non riesco proprio a trovarlo. Ho creato una funzione nidificata in Ruby e non riesco ad accedere alle variabili dalla funzione esterna all'interno della funzione interna:
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
Ottengo: NameError: variabile o metodo locale non definito
x 'per main: Object`
L'analogo codice Python funziona:
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
Quindi, come posso fare la stessa cosa in Ruby?
Soluzione
Per quanto ne so, la definizione di una funzione con nome all'interno di una funzione non ti dà accesso a nessuna variabile locale.
Quello che puoi fare invece è usare un Proc:
def foo(x)
bar = lambda do
puts x
end
bar.call
42
end
foo(5)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow