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

ये 4 विधियाँ या तो true लौटाती हैं या false ।
सामग्री
- 1 रूबी ऑल मेथड
- 2 सभी और खाली सरणी
- 3 रूबी कोई नहीं विधि
- 4 रूबी कोई भी तरीका
- 5 रूबी वन मेथड
- 6 नई रूबी 2.5 फ़ीचर
- 7 सारांश
- 7.1 संबंधित
चलो यह करते हैं!
रूबी ऑल मेथड
यदि आप यह जांचना चाहते हैं कि किसी सरणी के अंदर के सभी तारों का एक विशिष्ट आकार है या नहीं।
आप ऐसा कर सकते हैं :
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 return लौटाते हैं , अन्यथा हम true return लौटाते हैं अंत में।
कुछ इस तरह के लिए यह बहुत सारा कोड है।
इसे हर बार सेट करने की कल्पना करें आप इस प्रकार की जांच करना चाहते हैं।
यह बहुत काम है!
यहाँ केवल एक ही चीज़ की हम परवाह करते हैं:
str.size == 5
यह वह स्थिति है जिसकी हम जांच कर रहे हैं ।
क्या ऐसा करने का कोई बेहतर तरीका है?
हाँ!
all? का उपयोग करें आपके लिए पूरी मेहनत करने का तरीका।
यहां बताया गया है :
strings.all? { |str| str.size == 5 }
बस।
सभी और खाली सरणी
एक बात जो आपको अवश्य जाननी चाहिए:
यह all? विधि true लौटाएगी यदि आप इसे एक खाली सरणी पर कहते हैं।
उदाहरण :
[].all? { |s| s.size == 1 }
# true
स्पष्टीकरण :
चूँकि NO तत्व false हैं तो सभी तत्व true होने चाहिए ।
इसके पीछे यही तर्क है।
रूबी कोई नहीं विधि
अगर आप all? . का उल्टा चाहते हैं , उपयोग करें none?
यहां एक उदाहरण दिया गया है :
strings.none? { |str| str.size == 5 }
यह true लौटाता है यदि कोई भी स्ट्रिंग शर्त से मेल नहीं खाती है, या false यदि एक या अधिक इससे मेल खाते हैं।
यह तब तक की तरह है जब तक कि if कथन के लिए।
रूबी एनी मेथड
क्या आप जानना चाहेंगे कि क्या कोई तत्व आपकी स्थिति से मेल खाता है?
आप 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 है कम से कम एक तत्व के लिए।
रूबी वन मेथड
आप जांच सकते हैं कि क्या वास्तव में एक तत्व true लौटाता है one? . के साथ विधि।
यहां एक उदाहरण दिया गया है :
["a", 1, {}].one? { |obj| obj.kind_of?(Hash) }
# true
आप ब्लॉक के बिना इसका उपयोग यह जांचने के लिए कर सकते हैं कि क्या सरणी में बिल्कुल एक सत्य मान है (कुछ भी लेकिन false / nil )।
["a"].one? # true [].one? # false [nil].one? # false
मैं size == 1 . पर टिका रहूंगा क्योंकि यह अधिक स्पष्ट है। हर कोई यह समझेगा कि भले ही वे one? . से परिचित न हों विधि, जो कि सामान्य नहीं है।
नई रूबी 2.5 फ़ीचर
रूबी 2.5 के बाद से ये 4 तरीके (any? / all? / none? / one? ) एक तर्क भी लें जो grep के तर्क की तरह काम करता है।
यहां मेरा मतलब है :
[:orange, :apple, :coconut].any?(Symbol) # true [1,2,3].all?(1..10) # true
यदि आप कक्षा, नियमित अभिव्यक्ति या श्रेणी की जांच करना चाहते हैं तो यह एक अच्छा छोटा शॉर्टकट है।
सारांश
आपने रूबी के 4 भयानक तरीकों के बारे में सीखा है जो आपको बहुत काम बचा सकते हैं! ये विधियां केवल true return लौटाती हैं या false ।
अगर आपने पहले इन तरीकों का इस्तेमाल नहीं किया है... क्यों न इन्हें अभी आज़माएं?
अगर आपको यह लेख उपयोगी लगा हो तो कृपया इसे शेयर करें।