Sono sicuro che c'è una risposta semplice per questo; Non riesco proprio a trovarlo. Feci una funzione nidificata in rubino, e avevo difficoltà a variabili dalla funzione esterna all'interno della funzione interna:Ruby che accede a variabili esterne nella funzione nidificata
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
ottengo: NameError: undefined local variable or method
x' per principale: Object`
Il codice Python analogo funziona:
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
Quindi, come faccio a fare la stessa cosa in Ruby?
Un importante (ma sottili) distinzione è che def ... fine definisce un metodo, non una funzione. usa lambda/proc per definire le funzioni e catturare le variabili locali in una chiusura, come mostra Tadman. – rampion