ब्रेसिज़ एक गुमनाम समारोह को परिभाषित, एक ब्लॉक कहा जाता है। पाइप के बीच टोकन इस ब्लॉक के तर्क हैं। आवश्यक तर्कों की संख्या इस बात पर निर्भर करती है कि ब्लॉक का उपयोग कैसे किया जाता है। प्रत्येक बार जब ब्लॉक का मूल्यांकन किया जाता है, तो ब्लॉक की आवश्यकता वाली विधि उस ऑब्जेक्ट पर आधारित मूल्य को पास करेगी।
यह एक विधि को परिभाषित करने जैसा ही है, केवल यह उस विधि से परे संग्रहीत नहीं है जो ब्लॉक स्वीकार करता है।
उदाहरण के लिए:
def my_print(i)
puts i
end
जब निष्पादित इस रूप में भी ऐसा ही होगा:
{|i| puts i}
फर्क सिर्फ इतना ब्लॉक मक्खी पर परिभाषित किया गया है और संग्रहीत नहीं है।
उदाहरण 2: निम्नलिखित बयानों बराबर
25.times &method(:my_print)
25.times {|i| puts i}
हम गुमनाम ब्लॉक उपयोग करें, क्योंकि एक ब्लॉक के रूप में पारित कार्यों के बहुमत आमतौर पर अपनी स्थिति के लिए विशिष्ट और मूल्य पुनः उपयोग के लिए परिभाषित करने नहीं हैं।
तो क्या होता है जब कोई विधि किसी ब्लॉक को स्वीकार करती है? यह विधि पर निर्भर करता है।एक ब्लॉक को स्वीकार करने वाले तरीके इसे कॉलिंग ऑब्जेक्ट से मूल्यों को अच्छी तरह से परिभाषित तरीके से पास करके कॉल करेंगे। वापस लौटाया गया ब्लॉक पर आवश्यक विधि पर निर्भर करता है।
उदाहरण के लिए: 25.times {|i| puts i}
में। टाइम्स 0 के बीच प्रत्येक मान के लिए एक बार ब्लॉक को कॉल करता है और इसके कॉलर के मूल्य को ब्लॉक में मान को अस्थायी चर के रूप में पास करता है I। टाइम्स कॉलिंग ऑब्जेक्ट का मान देता है। इस मामले में 25.
चलो विधि को देखें जो दो तर्कों के साथ एक ब्लॉक स्वीकार करता है।
{:key1 => "value1", :key2 => "value2"}.each {|key,value|
puts "This key is: #{key}. Its value is #{value}"
}
इस मामले में प्रत्येक प्रत्येक मुख्य/मान जोड़े पहला तर्क के रूप में कुंजी और दूसरा तर्क के रूप में मूल्य पारित करने के लिए ब्लॉक वाले कहते हैं।
संबंधित प्रश्न: http://stackoverflow.com/questions/665576/what-are-those-pipe-symbols-for-in-ruby –