How do I properly scope a Ruby lambda? -


मेरे पास यह लैम्ब्डा है:

  echo_word = lambda do | शब्द | शब्दों को many_words = /\wss(.+)/ 2.times do sleep 1 match = many_words.match (शब्द) डालता है [1] यदि मैच की अंत नींद 1 एंड   

मैं इसे प्रत्येक को एक ब्लॉक के रूप में देना चाहता हूं, और भविष्य में कई और अधिक ब्लॉक करना चाहता हूं।

  def is_there_an_echo_in_here * args args.each और echo_word # फेंकता है नाम त्रुटि का अंत है_तोरे_आ_छोआ_इन_हाँ 'हैलो आउट आउट', 'मज़ेदार बार'   

लेकिन जब मैं my_funky_lambda.rb को इस लैम्ब्डा पद्धति से चलाता हूं, तो मुझे एक नेमअरेर मिलता है। मुझे यकीन नहीं है कि इस लैम्ब्डा के दायरे के साथ क्या हो रहा है, लेकिन मैं इसे is_there_an_echo_in_here से प्राप्त नहीं कर सकता।

echo_word ठीक से है स्कैड और प्रयोग किया जाता है यदि मैं इसे निरंतर ECHO_WORD बना देता हूं और इसे इस तरह प्रयोग करता हूं, लेकिन एक अधिक सरल समाधान होना चाहिए।

इस परिदृश्य में, एक्सेस करने का सबसे अच्छा तरीका क्या है echo_word अंदर से lamba is_there_an_echo_in_here , उदाहरण के लिए एक मॉड्यूल में इसे लपेटकर, वैश्विक दायरे तक पहुंचने, कुछ और?

रूबी में, नियमित तरीके नहीं हैं बंद। इस कारण से आप echo_word अंदर is_there_an_echo_in_here नहीं कॉल कर सकते हैं।

ब्लॉक बंद हैं, हालांकि। रूबी 2 + में, आप यह कर सकते हैं:

  define_method (: is_there_an_echo_in_here) ऐसा करें | * आर्ग्स | Args और echo_word एंड   

एक अन्य तरीका एक कोड के रूप में echo_word पास करना होगा:

  def is_there_an_echo_in_here * args , ब्लॉक args.each और amp; ब्लॉक एंड is_there_an_echo_in_ यहां 'हैलो आउट', 'मज़ेदार टाइम्स', इको_वर्ड    

Comments

Popular posts from this blog

excel vba - How to delete Solver(SOLVER.XLAM) code -

github - Teamcity & Git - PR merge builds - anyway to get HEAD commit hash? -

ios - Replace text in UITextView run slowly -