روبي الوصول إلى المتغيرات الخارجية في وظيفة المتداخلة
سؤال
وأنا متأكد من أن هناك إجابة بسيطة لذلك؛ أنا فقط لا يمكن أن يبدو للعثور عليه. لقد تقدمت الدالة المتداخلة في روبي، وكنت تجد صعوبة في الوصول إلى المتغيرات من وظيفة الخارجية داخل وظيفة الداخلية:
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
وأحصل على: NameError: undefined local variable or method
x "للرئيسية: Object`
وكود بايثون مماثل يعمل:
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
ولكن كيف أفعل الشيء نفسه في روبي؟
المحلول
وبقدر ما أعرف، وتحديد وظيفة اسمه ضمن وظيفة لا تعطيك الوصول إلى أي المتغيرات المحلية.
وما يمكنك القيام به بدلا من ذلك هو استخدام بروك:
def foo(x)
bar = lambda do
puts x
end
bar.call
42
end
foo(5)
لا تنتمي إلى StackOverflow