Ruby Programming

रूबी की पुनरावृत्ति शक्तियों में महारथ: ईच और कलेक्ट

Spread the love

रूबी की सुंदरता अक्सर इसके शक्तिशाली पुनरावृत्ति विधियों द्वारा उजागर होती है। दो प्रमुख विधियाँ, each और collect (जिसे map भी जाना जाता है), संग्रहों को संसाधित करने के लिए मौलिक हैं। इनकी शक्तियों को समझना और इन्हें कैसे संयोजित करना है, इससे रूबी कोड की दक्षता और पठनीयता में महत्वपूर्ण सुधार होता है।

विषय-सूची

  1. each विधि को समझना
  2. collect (map) विधि का अन्वेषण
  3. each और collect को संयोजित करना
  4. उन्नत पुनरावृत्ति तकनीकें
  5. निष्कर्ष
  6. अक्सर पूछे जाने वाले प्रश्न (FAQ)

each विधि को समझना

each विधि रूबी पुनरावृत्ति का आधार है। यह किसी सरणी, हैश या अन्य गणना योग्य ऑब्जेक्ट के प्रत्येक तत्व के माध्यम से पुनरावृति करती है, प्रत्येक के लिए कोड के एक ब्लॉक को निष्पादित करती है। मुख्य रूप से साइड इफेक्ट्स के लिए उपयोग किया जाता है—each विधि के दायरे के बाहर कुछ संशोधित करने वाली क्रियाएँ—यह मूल संग्रह को स्वाभाविक रूप से परिवर्तित नहीं करती है।


numbers = [1, 2, 3, 4, 5]

numbers.each do |number|
  puts number * 2  # प्रत्येक संख्या को 2 से गुणा करके प्रिंट करता है
end

# आउटपुट:
# 2
# 4
# 6
# 8
# 10

यहाँ, each पुनरावृति करता है, और ब्लॉक प्रत्येक दोगुनी संख्या को प्रिंट करता है। numbers सरणी अपरिवर्तित रहती है।

collect (map) विधि का अन्वेषण

each के विपरीत, collect (या map—ये समानार्थी हैं) संग्रह को बदलता है, प्रत्येक तत्व पर एक ब्लॉक लागू करने के परिणामों वाली एक नई सरणी लौटाता है। यह संशोधित डेटासेट बनाने के लिए एकदम सही है।


numbers = [1, 2, 3, 4, 5]

squared_numbers = numbers.collect do |number|
  number * number # प्रत्येक संख्या का वर्ग करता है
end

puts squared_numbers  # [1, 4, 9, 16, 25] प्रिंट करता है
puts numbers         # [1, 2, 3, 4, 5] प्रिंट करता है - मूल सरणी अपरिवर्तित

collect squared_numbers बनाता है; मूल numbers सरणी अछूती रहती है।

each और collect को संयोजित करना

each और collect की शक्ति वास्तव में एक साथ उपयोग किए जाने पर चमकती है। आप डेटा को बदलते हुए साइड इफेक्ट्स के लिए each का लाभ उठा सकते हैं।


numbers = [1, 2, 3, 4, 5]

squared_numbers = numbers.collect do |number|
  puts "प्रसंस्करण: #{number}" # साइड इफेक्ट
  number * number
end

puts squared_numbers # [1, 4, 9, 16, 25] प्रिंट करता है

यह collect ब्लॉक के भीतर परिवर्तन और लॉगिंग को जोड़ता है।

उन्नत पुनरावृत्ति तकनीकें

मूल उपयोग से परे, अधिक जटिल समेकन और परिवर्तनों के लिए inject/reduce जैसी विधियों का अन्वेषण करें। ये संग्रहों को संसाधित करने के वैकल्पिक तरीके प्रदान करते हैं, जो तत्व-वार संचालन से परे लचीलापन प्रदान करते हैं।

निष्कर्ष

each और collect किसी भी रूबी डेवलपर के लिए आवश्यक हैं। व्यक्तिगत रूप से और संयुक्त रूप से, उनके उपयोगों को समझने से कोड की स्पष्टता, दक्षता और रखरखाव में महत्वपूर्ण सुधार होता है। चुनाव इस बात पर निर्भर करता है कि आपको मूल संग्रह को संशोधित करने की आवश्यकता है या केवल प्रत्येक तत्व पर क्रियाएँ करने की आवश्यकता है।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

  • प्रश्न: collect और map में क्या अंतर है? उत्तर: ये समानार्थी हैं; कार्यात्मक रूप से समान। पठनीयता के लिए अक्सर map को प्राथमिकता दी जाती है।
  • प्रश्न: क्या each कोई मान लौटा सकता है? उत्तर: each हमेशा मूल संग्रह लौटाता है। इसका उद्देश्य साइड इफेक्ट्स है।
  • प्रश्न: क्या मैं हैश के साथ each का उपयोग कर सकता हूँ? उत्तर: हाँ। my_hash.each { |key, value| puts "#{key}: #{value}" }
  • प्रश्न: क्या collect के विकल्प हैं? उत्तर: हाँ, inject/reduce, लेकिन तत्व-वार परिवर्तनों के लिए collect/map सबसे सरल रहता है।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *