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

रूबी का फिर से करें, पुनः प्रयास करें और अगले कीवर्ड

हमने retry . के बारे में बात की है अपवादों के बाद पुन:प्रयास करने पर चर्चा करते समय कीवर्ड। इसका अल्पज्ञात समकक्ष redo समान रूप से काम करता है, लेकिन पूरे ब्लॉक के बजाय लूप पुनरावृत्तियों को फिर से चलाता है।

redo कीवर्ड

जैसा कि हमने पिछले अकादमी लेख में सीखा था, retry आपको किसी ब्लॉक में कोड के एक टुकड़े को पुनः प्रयास करने देता है:

begin
  puts "Iteration"
  raise
rescue
  retry
end

यह उदाहरण अपवाद उठाने से पहले कंसोल पर "Iteration" शब्द प्रिंट करता है। बचाव ब्लॉक निष्पादित होते हैं, जो retry . कहते हैं और ब्लॉक को फिर से शुरू से शुरू करता है। इसका परिणाम हमारे कार्यक्रम में अंतहीन रूप से Iteration प्रिंट करना है . redo लूप का उपयोग करते समय कीवर्ड आपको समान प्रभाव प्राप्त करने देता है। यह उन स्थितियों में उपयोगी है जहां उदाहरण के लिए आपको पुनरावृति करते समय पुन:प्रयास करने की आवश्यकता होती है।

10.times do |i|
  puts "Iteration #{i}"
  redo if i > 2
end

यह प्रिंट होगा:

$ ruby redo.rb
Iteration 0
Iteration 1
Iteration 2
Iteration 3
Iteration 3
Iteration 3
...

ध्यान दें कि पुनरावृत्ति गणना समान कैसे रहती है? यह लूप की शुरुआत में निष्पादन को वापस ले जाएगा। कोड का यह प्रकार retry . का उपयोग कर रहा है ठीक उसी आउटपुट को प्रिंट करेगा:

10.times do |i|
  begin
    puts "Iteration #{i}"
    raise if i > 2
  rescue
    retry
  end
end

आप redo . का उपयोग कर सकते हैं एक लूप में पुनः प्रयास करने को लागू करने के लिए। अगले उदाहरण में हमारे पास नौकरियों की कतार है। वे या तो :success . लौटाते हैं या :failure . जब तक कार्य सफल नहीं हो जाता तब तक हम लूप के उसी पुनरावृत्ति को फिर से चलाते रहते हैं।

[job_1, job_2, job_3, job_4].each do |job|
  redo unless job.call == :success
end

रूबी 1.8

retry . का व्यवहार और redo रूबी 1.8 और 1.9 के बीच बदल गया। वे लूप के पुनरावृत्ति को पुनरारंभ करते थे, लेकिन दोनों एक अलग तरीके से। 1.9 से, retry केवल begin . के साथ काम करता है /rescue ब्लॉक करें और redo केवल लूप में काम करता है।

next कीवर्ड

यदि आप लूप के अगले पुनरावृत्ति पर जाना चाहते हैं, जैसा कि वर्तमान के प्रारंभ में वापस जाने के विपरीत है, तो आप next का उपयोग कर सकते हैं ।

10.times do |i|
  puts "Iteration #{i}"
  next if i > 2
  puts "Iteration done"
end

यह प्रिंट होगा:

$ ruby next.rb
Iteration 0
Iteration done
Iteration 1
Iteration done
Iteration 2
Iteration done
Iteration 3
Iteration 4
...

देखें कि पुनरावृत्ति काउंटर कैसे बढ़ता रहता है? ज्यादातर मामलों में next . का उपयोग करना तुम क्या चाहते हो। देखें redo यदि आपको एक लूप की आवश्यकता है जो सटीक संख्या में चलता है या किसी सरणी पर पुनरावृति करते समय त्रुटि प्रबंधन की आवश्यकता होती है।

हमें उम्मीद है कि आपने लूप में पुनरावृत्तियों को फिर से करने के बारे में कुछ नया सीखा है और यह जानना अच्छा लगेगा कि आपने इस लेख के बारे में क्या सोचा (या ऐपसिग्नल अकादमी श्रृंखला में से कोई भी)। कृपया हमें यह बताने में संकोच न करें कि आप क्या सोचते हैं, या यदि आपके पास कोई रूबी विषय है जिसके बारे में आप अधिक जानना चाहते हैं।


  1. मैक पर पूर्ववत और फिर से कैसे करें

    कंप्यूटर पर काम करने के सबसे अच्छे हिस्सों में से एक यह है कि आप अपनी किसी भी गलती को जल्दी से ठीक कर सकें। इसमें आपके द्वारा गलती से किए गए सभी पूर्ववत शामिल हैं—फिर से करें बटन आपको पूर्ववत करें बटन जितना ही समय और प्रयास बचा सकता है! लेकिन आप मैक पर पूर्ववत और फिर से कैसे करते हैं? हम यहां आपको

  1. रुबोकॉप के साथ लाइनिंग और ऑटो-फॉर्मेटिंग रूबी कोड

    लाइनिंग प्रोग्रामेटिक और शैलीगत त्रुटियों के लिए स्रोत कोड की स्वचालित जाँच है। यह जाँच एक स्थिर कोड विश्लेषण उपकरण द्वारा की जाती है जिसे लिंटर कहा जाता है। एक कोड फ़ॉर्मेटर, हालांकि, स्रोत कोड को स्वरूपित करने से संबंधित एक उपकरण है, ताकि यह नियमों के पूर्व-कॉन्फ़िगर किए गए सेट का सख्ती से पालन कर

  1. लॉगर और लॉगरेज के साथ रूबी में लॉगिंग

    रूबी में लॉग के साथ कार्य करना लॉगिंग उन प्राथमिक कार्यों में से एक है जिसे एक एप्लिकेशन आमतौर पर संबोधित करता है। लॉग का उपयोग तब किया जाता है जब आपको आवश्यकता होती है, उदाहरण के लिए, देखें कि आपके ऐप्स के अंदर क्या हो रहा है, उन पर नज़र रखें, या कुछ विशिष्ट डेटा के लिए मीट्रिक एकत्र करें। एक न