मैं समझता हूँ किपैरामीटर 'और ब्लॉक' के साथ विधि में 'उपज स्वयं' का उपयोग करने में कोई अंतर है और पैरामीटर 'और ब्लॉक` के बिना किसी विधि में' उपज स्वयं '?
def a(&block)
block.call(self)
end
और
def a()
yield self
end
समान परिणाम प्राप्त है, अगर मुझे लगता है इस तरह के एक ब्लॉक a {}
नहीं है।
def a(&block)
yield self
end
यह एक है: है, क्योंकि मुझे लगता है कि जैसे कुछ कोड पर ठोकर खाई है कि क्या यह किसी भी फर्क नहीं पड़ता या वहाँ होने (अगर मैं चर/संदर्भ ब्लॉक अन्यथा उपयोग नहीं करते हैं) के किसी भी लाभ है - मेरा प्रश्न है ठोस मामले में जहां मैं &block
के उपयोग समझ में नहीं आता:
def foo; end
def bar(&blk); end
method(:foo).parameters #=> []
method(:bar).parameters #=> [[:block, :blk]]
IDEs और प्रलेखन:
def rule(code, name, &block)
@rules = [] if @rules.nil?
@rules << Rule.new(code, name)
yield self
end
[ब्लॉक तर्क] (http://ruby-doc.org/core-2.4.1/doc/syntax/methods_rdoc.html#label-Block+Argument) के लिए दस्तावेज़ विभिन्न उपयोग मामलों को दर्शाता है। – Stefan
@Stefan मैंने एक विशिष्ट मामला जोड़ा जहां मुझे उपयोग और ब्लॉक के उपयोग को समझ में नहीं आया, शायद मुझे कुछ याद आती है, तो आप एक नज़र देख सकते हैं? इसके अलावा मैं प्रलेखन पढ़ता हूं और यह मेरी समझ से मेल खाता है। –
यदि आप स्पष्ट रूप से इसका उपयोग नहीं करेंगे, तो इसे सूची में शामिल न करें। यह invocations धीमा बनाता है और यह भ्रमित है। – ndn