गैर ब्लॉक चर अनिवार्य हैं:ब्लॉक चर वैकल्पिक क्यों हैं?
def foo arg = nil; end
foo # => nil
लेकिन ब्लॉक चर वैकल्पिक हैं::
def foo █ end
foo # => nil
def foo arg; end
foo # => ArgumentError
आदेश वैकल्पिक तर्क अनुमति देने के लिए, एक डिफ़ॉल्ट मान की आपूर्ति की जानी है
डिफ़ॉल्ट मान के बिना, अनुपस्थित ब्लॉक चर को nil
असाइन किया गया है, और वास्तव में, ब्लॉक चर डिफ़ॉल्ट मान नहीं ले सकते:
def foo &block = ->{puts :foo}; end
# => syntax error
इसके विपरीत, एक विधि एक अतिरिक्त ब्लॉक कि परिभाषा की आवश्यकता नहीं है ले जा सकते हैं:
def foo; end
foo{puts :foo} # => nil
क्या ब्लॉक चर का लाभ इस तरह तैयार किया जा रहा के रूप में गैर-ब्लॉक करने का विरोध किया है चर?