आज आप 4 Enumerable मेथड्स के बारे में सीखेंगे जो आपको तत्वों की एक सरणी, हैश, या Enumerable मॉड्यूल को शामिल करने वाले किसी भी अन्य ऑब्जेक्ट्स के खिलाफ एक सशर्त कथन की जांच करने में मदद करेंगे।

ये 4 मेथड्स या तो true या false लौटाते हैं।
विषय सूची
- 1 Ruby All मेथड
- 2 All और खाली सरणियाँ
- 3 Ruby None मेथड
- 4 Ruby Any मेथड
- 5 Ruby One मेथड
- 6 नई Ruby 2.5 सुविधा
- 7 सारांश
- 7.1 संबंधित
चलिए शुरू करते हैं!
Ruby All मेथड
यदि आप जांचना चाहते हैं कि सरणी के अंदर सभी स्ट्रिंग्स का एक विशिष्ट आकार है।
आप यह कर सकते हैं:
def all_words_have_specific_size?(words) return false if words.empty? words.each do |str| return false unless str.size == 5 end true end words = ["bacon", "orange", "apple"] all_words_have_specific_size?(words) # false
हम हर स्ट्रिंग की जांच करते हैं, यदि आकार वह नहीं है जो हम चाहते हैं तो हम false लौटाते हैं, अन्यथा हम अंत में true लौटाते हैं।
इस तरह की जांच के लिए यह बहुत सारा कोड है।
कल्पना करें कि हर बार जब आप इस तरह की जांच करना चाहते हैं तो इसे सेटअप करना पड़े।
यह बहुत काम है!
यहां एकमात्र चीज जिसकी हमें परवाह है वह है:
str.size == 5
यह वह शर्त है जिसकी हम जांच कर रहे हैं।
क्या इसे करने का कोई बेहतर तरीका है?
हाँ!
सभी कठिन काम आपके लिए करने के लिए all? मेथड का उपयोग करें।
यहां कैसे:
strings.all? { |str| str.size == 5 }
बस इतना ही।
All और खाली सरणियाँ
एक बात जो आपको पता होनी चाहिए:
यह all? मेथड खाली सरणी पर कॉल किए जाने पर true लौटाएगा।
उदाहरण:
[].all? { |s| s.size == 1 } # true
व्याख्या:
चूंकि कोई तत्व false नहीं है इसलिए सभी तत्व true होने चाहिए।
यही इसके पीछे का तर्क है।
Ruby None मेथड
यदि आप all? का उल्टा चाहते हैं, तो none? का उपयोग करें।
यहां एक उदाहरण है:
strings.none? { |str| str.size == 5 }
यदि कोई स्ट्रिंग शर्त से मेल नहीं खाती तो यह true लौटाता है, या यदि एक या अधिक मेल खाते हैं तो false।
यह if स्टेटमेंट्स के लिए unless की तरह है।
Ruby Any मेथड
क्या आप जानना चाहेंगे कि क्या कोई तत्व आपकी शर्त से मेल खाता है?
आप any? मेथड का उपयोग कर सकते हैं!
इस तरह:
[1,2,3,4,5].any? # true
इस विशिष्ट उदाहरण में, any? empty? के व्युत्क्रम की तरह काम करता है। लेकिन यह हर स्थिति के लिए काम नहीं करेगा।
क्योंकि यह प्रश्न पूछ रहा है:
"क्या इस सरणी में कोई TRUTHY तत्व हैं?"
यदि आपकी सरणी में केवल गैर-सत्य (nil/false) मान शामिल हैं तो आपको false मिलेगा, लेकिन सरणी वास्तव में खाली नहीं है।
उदाहरण:
[nil].any? # false
आप इस मेथड को एक ब्लॉक भी पास कर सकते हैं:
[1,2,3].any? { |n| n > 0 } # true
यह जांचेगा कि n > 0 कम से कम एक तत्व के लिए true है।
Ruby One मेथड
आप one? मेथड के साथ जांच सकते हैं कि क्या बिल्कुल एक तत्व true लौटाता है।
यहां एक उदाहरण है:
["a", 1, {}].one? { |obj| obj.kind_of?(Hash) } # true
आप ब्लॉक के बिना इसका उपयोग यह जांचने के लिए कर सकते हैं कि क्या सरणी में ठीक एक सत्य मान है (कुछ भी लेकिन false / nil)।
["a"].one? # true [].one? # false [nil].one? # false
मैं size == 1 पर टिका रहूंगा क्योंकि यह अधिक स्पष्ट है। हर कोई इसे समझेगा भले ही वे one? मेथड से परिचित न हों, जो इतना आम नहीं है।
नई Ruby 2.5 सुविधा
Ruby 2.5 से ये 4 मेथड्स (any? / all? / none? / one?) एक आर्गुमेंट भी लेते हैं जो grep के आर्गुमेंट की तरह काम करता है।
मेरा मतलब यह है:
[:orange, :apple, :coconut].any?(Symbol) # true [1,2,3].all?(1..10) # true
यह एक अच्छा छोटा शॉर्टकट है यदि आप किसी क्लास, रेगुलर एक्सप्रेशन या रेंज की जांच करना चाहते हैं।
सारांश
आपने 4 शानदार Ruby मेथड्स के बारे में सीखा जो आपका बहुत सारा काम बचा सकते हैं! ये मेथड्स केवल true या false लौटाते हैं।
यदि आपने पहले इन मेथड्स का उपयोग नहीं किया है... तो क्यों न उन्हें अभी आज़माएं?
यदि आपको यह लेख उपयोगी लगा तो कृपया साझा करें।