Tôi chắc chắn có một câu trả lời đơn giản cho việc này; Tôi dường như không thể tìm thấy nó. Tôi đã thực hiện một chức năng lồng nhau trong Ruby, và tôi đã gặp khó khăn trong việc tiếp cận các biến từ hàm bên ngoài bên trong hàm bên trong:Ruby truy cập các biến bên ngoài trong hàm lồng nhau
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
tôi nhận được: NameError: undefined local variable or method
x' cho chính: Object`
Mã Python tương tự hoạt động:
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
Vậy làm cách nào để làm điều tương tự trong Ruby?
Một quan trọng (nhưng tinh tế) phân biệt ở đây là def ... cuối định nghĩa một phương pháp, không phải là một chức năng. sử dụng lambda/proc để định nghĩa các hàm và nắm bắt các biến cục bộ trong một bao đóng, như tadman hiển thị. – rampion