روبي الوصول إلى المتغيرات الخارجية في وظيفة المتداخلة

StackOverflow https://stackoverflow.com/questions/1016408

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا متأكد من أن هناك إجابة بسيطة لذلك؛ أنا فقط لا يمكن أن يبدو للعثور عليه. لقد تقدمت الدالة المتداخلة في روبي، وكنت تجد صعوبة في الوصول إلى المتغيرات من وظيفة الخارجية داخل وظيفة الداخلية:

def foo(x)
  def bar
    puts x
  end
  bar
  42
end

foo(5)

وأحصل على: NameError: undefined local variable or methodx "للرئيسية: 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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top