How to use a block parameter in a ruby splat? -


रूबी 2.0.0p247 का उपयोग करना

मेरे पास एक Def :

  def foo (a, b, और ब्लॉक): बार [[a, b]] = ब्लॉक अंत   

अगर मैं इस फ़ंक्शन के साथ splat पैरामीटर का उपयोग करता हूं तो मैं ब्लॉक पैरामीटर को कैसे कोड दूं?

उदाहरण के लिए

  params = [: a, [: 2 ], {| M | m.oo}] # सिंटैक्स त्रुटि, अप्रत्याशित '|', उम्मीद है '}' foo (* परामश) # मैं यह काम कैसे कर सकता हूं?    

आपको इसे इस तरह से पास करना होगा:

  पैराम्स = [: ए, [: 2]] ब्लॉक = लैम्ब्डा {| m | M.oo} foo (* params, और ब्लॉक)   

यहां कुछ चीजें:

  • ब्लॉक को स्वयं में नहीं होना चाहिए
  • यदि आप

    यदि आप

    बिल्कुल इसे एक सरणी में डाल दिया है, (मुझे लगता है) आप यह कर सकते हैं:

      params = [: a, [: 2], लैम्ब्डा {| m | M.oo}] foo (* (परामश [0 ..-1]), और (पैराम्स.लिस्ट))   

    यदि आप या ब्लॉक नहीं हो सकता है, तो यह सबसे आसान है Foo को बदलने के लिए:

      def foo (a, b, block = nil): बार [[a, b]] = ब्लॉक अंत   

    हटा कर & Amp; आप इस तरह foo कॉल नहीं कर सकते:

      foo (a, b) {| m | M.oo}   

    लेकिन आप अपने प्रारम्भिक रूप से आपके प्रश्न में दिखाए गए फ़ॉर्म का उपयोग कर सकते हैं:

      params = [: a, [: 2], लैम्ब्डा {| M | Moooo}] foo (* params)   

    या इस तरह से:

      foo (: a, [: 2], लैम्ब्डा {| m | M.oo})   

    यदि आप कोई ब्लॉक नहीं देते हैं, तो यह शून्य पर डिफ़ॉल्ट होगा।

Comments

Popular posts from this blog

Java - Error: no suitable method found for add(int, java.lang.String) -

java - JPA TypedQuery: Parameter value element did not match expected type -

c++ - static template member variable has internal linkage but is not defined -