Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Ruby के 'next' और 'break' कीवर्ड्स को मास्टर करना: एक पूर्ण गाइड

Ruby next कीवर्ड (इटरेशन छोड़ें)

next कीवर्ड आपको एक इटरेशन को छोड़ने की अनुमति देता है।

उदाहरण:

मान लीजिए आप स्ट्रिंग्स गिन रहे हैं।

और किसी कारण से आप 4 आकार की स्ट्रिंग्स को नहीं गिनना चाहते।

आप ऐसा कर सकते हैं:

 strings = ["one", "two", "four", "five"]
strings.inject(0) do |sum, str|
  next if str.size == 4
  sum + str.size
end
# nil 

यह कोड काम नहीं करेगा।

आपको nil मिलेगा।

क्यों?

क्योंकि next डिफ़ॉल्ट रूप से nil लौटाता है, ठीक वैसे ही जैसे बिना रिटर्न वैल्यू के return कॉल करना।

जैसा कि आप जानते होंगे...

inject का उपयोग करने से ब्लॉक द्वारा लौटाया गया अंतिम मान लिया जाता है और वह अगले इटरेशन का पहला आर्गुमेंट बन जाता है।

दूसरे शब्दों में, sum nil बन जाता है।

समाधान?

next लाइन को इसमें बदलें:

 next sum if str.size == 4 

यह next को sum का मान लौटाता है।

यदि प्रदर्शन सर्वोच्च प्राथमिकता नहीं है (अक्सर यह नहीं है), तो आप next का उपयोग करने से बचने के लिए एरे को प्री-फिल्टर कर सकते हैं।

या और भी बेहतर:

 strings = ["one", "two", "four", "five"]
strings.inject(0) { |sum, str| str.size == 4 ? sum : sum + str.size }
# 6 

यह एक टर्नरी ऑपरेटर है।

मुझे लगता है कि Ruby आपको next का उपयोग करने से बचने के लिए पर्याप्त टूल्स देता है।

उनका उपयोग करें!

Ruby break कीवर्ड (लूप से जल्दी बाहर निकलें)

break कीवर्ड next की तरह है, लेकिन यह लूप को समाप्त करता है और एक मान लौटाता है, बजाय केवल एक इटरेशन को छोड़ने के।

इसका उपयोग लूप से जल्दी रिटर्न के लिए किया जा सकता है।

return कीवर्ड का उपयोग क्यों नहीं? क्योंकि यह वर्तमान मेथड से बाहर निकल जाएगा, न कि केवल लूप से।

या एक बिना शर्त लूप को समाप्त करने के लिए।

इस तरह:

 count = 0
loop do
  break if count == 10
  puts count
  count += 1
end 

यह 0 से 9 तक संख्याओं की एक सूची प्रिंट करता है।

एक बेहतर विकल्प times मेथड, upto मेथड, या एक रेंज प्लस each मेथड का उपयोग करना होगा।

उदाहरण:

 0.upto(9).each(&method(:puts)) 

यह &method(:puts) प्रत्येक संख्या के लिए puts कॉल करने का सिर्फ एक शॉर्टकट है।

भ्रम से बचना: एक Ruby मेथड के रूप में Next

सिर्फ इसलिए कि कोई चीज़ कीवर्ड के रूप में मौजूद है, इसका मतलब यह नहीं है कि इसका उपयोग मेथड नाम के रूप में नहीं किया जा सकता।

Ruby में कुछ क्लासेस next को एक मेथड के रूप में लागू करती हैं।

String और Integer की तरह।

उदाहरण:

 1.next # 2 

परिणाम आश्चर्यजनक नहीं है, है ना?

यह कैसे है:

 "zz".next # "aaa" 

यह थोड़ा अधिक दिलचस्प है!

यह कैसे काम करता है?

ठीक है, हर क्लास next का अपना संस्करण लागू करती है, जिसमें अगले मान के लिए लॉजिक होता है।

Integers के लिए, यह सिर्फ +1 है।

Strings के लिए, यह अंतिम कैरेक्टर को एक से बढ़ाता है (अल्फाबेट में अगला / संख्याओं के लिए +1), फिर यदि एक कैरीओवर है (9 -> 0, z -> a), तो यह बाईं ओर अगले कैरेक्टर को बढ़ाएगा।

सारांश

आपने Ruby में next और break कीवर्ड्स के बारे में सीखा, कैसे वे आपको इटरेशन छोड़ने या लूप को जल्दी रोकने में मदद करते हैं।

अब अपने Ruby कौशल का अभ्यास करने की आपकी बारी है 🙂

पढ़ने के लिए धन्यवाद!


  1. रूबी में Dup vs Clone: ऑब्जेक्ट कॉपी करने की तकनीकों में महारत हासिल करें रूबी में Dup vs Clone: ऑब्जेक्ट कॉपी करने की तकनीकों में महारत हासिल करें

    क्या आप जानते हैं कि आप रूबी में ऑब्जेक्ट कॉपी कर सकते हैं? न केवल यह, बल्कि ऐसा करने के लिए दो अलग-अलग मेथड्स हैं! ये मेथड्स हैं: dup clone हम एक पल में अंतर का पता लगाएंगे, लेकिन पहले... आप ऑब्जेक्ट को क्लोन क्यों करना चाहेंगे? रूबी में कई ऑब्जेक्ट्स म्यूटेबल हैं, आप उन्हें बदल सकते हैं। यदि आप

  1. Ruby आउटपुट मूल बातें: puts, print, और p के बीच चयन Ruby आउटपुट मूल बातें: puts, print, और p के बीच चयन

    Ruby में कुछ प्रिंट करने के कई तरीके हैं। यहां सबसे उपयोगी हैं: puts print p लेकिन ये कैसे अलग हैं? और आपको कब किसका उपयोग करना चाहिए? यही आप इस लेख में सीखने जा रहे हैं! नई लाइन के बिना कैसे प्रिंट करें जब आप उपयोगकर्ता को देखने के लिए स्क्रीन पर कुछ प्रिंट करना चाहते हैं, तो आप आमतौर पर puts का

  1. रूबी ऑब्जेक्ट्स को डेकोरेटर पैटर्न से बढ़ाएं: एक व्यावहारिक गाइड रूबी ऑब्जेक्ट्स को डेकोरेटर पैटर्न से बढ़ाएं: एक व्यावहारिक गाइड

    डेकोरेटर डिज़ाइन पैटर्न क्या है? और आप इस पैटर्न का उपयोग अपने रूबी प्रोजेक्ट्स में कैसे कर सकते हैं? डेकोरेटर डिज़ाइन पैटर्न आपको क्लास को बदले बिना नई क्षमताएं जोड़कर एक ऑब्जेक्ट को बढ़ाने में मदद करता है। आइए एक उदाहरण देखें! लॉगिंग और प्रदर्शन इस उदाहरण में हम rest-client जैसे जेम का उपयोग करके