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

Ruby Infinity समझाया: यह कैसे काम करता है और यह क्यों मायने रखता है

अंकगणितीय संक्रियाओं के परिणाम के रूप में Infinity

Ruby कुछ गणितीय संक्रियाओं के परिणामस्वरूप एक Infinity ऑब्जेक्ट लौटाता है।

उदाहरण के लिए:

आप "शून्य से विभाजन" एरर से परिचित हो सकते हैं।

यहाँ यह है:

 1/0 # ZeroDivisionError: divided by 0 

लेकिन...

यदि आप एक फ्लोट का उपयोग करते हैं, तो आपको कुछ और मिलता है:

 1/0.0 # Infinity 

Infinity!

लेकिन इतना ही नहीं।

यदि आप 0 को 0.0 से विभाजित करने का प्रयास करते हैं, तो आपको एक और विशेष मान मिलता है।

एक नज़र डालें:

 0/0.0 # NaN 

यह NaN क्या है?

इसका अर्थ है "नॉट अ नंबर", और जहां तक मुझे पता है, यह Ruby में एकमात्र स्थान है जहां आपको यह मान मिलेगा।

यह एक चीज़ क्यों है?

यह IEEE 754 स्पेसिफिकेशन का हिस्सा है, जो बताता है कि फ्लोटिंग-पॉइंट संक्रियाओं को कैसे व्यवहार करना चाहिए।

बताते चलें, कुछ संबंधित मेथड्स हैं:

  • nan?
  • finite?
  • infinite?

आप इन मेथड्स का उपयोग विशेष मानों की जांच के लिए कर सकते हैं।

ये मेथड्स फ्लोट्स पर उपलब्ध हैं।

Ruby 2.4 से आप finite? और infinite? का उपयोग Integers के साथ भी कर सकते हैं।

अनंत रेंज कैसे बनाएं

ठीक है।

यह दिलचस्प था... आइए और उदाहरण देखते हैं।

अब रेंज के साथ!

यहाँ एक अनंत रेंज है:

 (1..Float::INFINITY).take(10) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

यह तब मददगार हो सकता है जब आप पहले से रेंज का अंत नहीं जानते।

एक समस्या...

यह केवल संख्याओं के साथ शुरुआती मान के रूप में काम करता है।

उदाहरण:

 ("a"..Float::INFINITY) # ArgumentError: bad value for range 

समाधान क्या है?

Ruby 2.6 के साथ, आप यह कर सकते हैं:

 ("a"..).take(5) # ["a", "b", "c", "d", "e"] 

हाँ, यह कोई गलती नहीं है! इस रेंज का कोई अंतिम मान नहीं है, केवल "a" का शुरुआती मान, फिर दो डॉट्स .. इसे कभी न खत्म होने वाली रेंज बनाने के लिए।

यह नया सिंटैक्स है।

यदि आप चाहते हैं कि यह काम करे तो Ruby 2.6+ का उपयोग करें।

अधिकतम और न्यूनतम मान के रूप में Infinity

Infinity के लिए एक और व्यावहारिक उपयोग?

खैर...

यह Ruby में सबसे बड़ी (Infinity) और सबसे छोटी (-Infinity) संख्या है।

आप इसे शुरुआती मान के रूप में उपयोग कर सकते हैं।

यहाँ एक उदाहरण है:

 def smallest_percent_size(style, ary_size)
  @smallest_percent ||= Float::INFINITY
  if style == :percent && ary_size < @smallest_percent
    @smallest_percent = ary_size
  end
  @smallest_percent
end 

यह कोड Rubocop, एक ओपन-सोर्स प्रोजेक्ट से है।

यहाँ बताया गया है कि यह कैसे काम करता है:

हम सबसे छोटे एरे आकार को खोजने की कोशिश कर रहे हैं, लेकिन हमें उसके लिए एक शुरुआती मान चाहिए क्योंकि nil का उपयोग करने से आपको एरर मिलेगा।

आप एक बड़ी संख्या टाइप कर सकते हैं और आशा कर सकते हैं कि यह पर्याप्त है।

या आप Float::INFINITY का उपयोग कर सकते हैं, यह जानते हुए कि यह सबसे बड़ी संभव संख्या है।

सारांश

आपने Ruby में infinity के बारे में सीखा, यह क्या है, यह कहां दिखाई दे सकता है और इसका उपयोग कैसे करें।

कृपया इस आर्टिकल को शेयर करें ताकि अधिक लोग इससे लाभ उठा सकें।

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


  1. रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं

    मैट्रिक्स एक 2D (2-डायमेंशनल) ऐरे है जिसका उपयोग स्प्रेडशीट जैसे डेटा को स्टोर और काम करने के लिए किया जा सकता है। इनका उपयोग किया जा सकता है: टेबल गेम में बोर्ड को दर्शाना (शतरंज, चेकर्स, आदि) आंकड़े और डेटा विश्लेषण प्लॉट्स और ग्राफ़ उत्पन्न करना क्योंकि यह एक शक्तिशाली डेटा संरचना है इसलिए इसका

  1. Ruby on Rails में महारत: इस सिद्ध फ्रेमवर्क के साथ शक्तिशाली वेब ऐप्स तेजी से बनाएं Ruby on Rails में महारत: इस सिद्ध फ्रेमवर्क के साथ शक्तिशाली वेब ऐप्स तेजी से बनाएं

    Ruby on Rails (कभी-कभी RoR) सबसे लोकप्रिय ओपन-सोर्स वेब एप्लिकेशन फ्रेमवर्क है। यह Ruby प्रोग्रामिंग भाषा के साथ बनाया गया है। आप सिंपल से लेकर कॉम्प्लेक्स तक एप्लिकेशन बनाने में मदद के लिए Rails का उपयोग कर सकते हैं, Rails के साथ आप जो हासिल कर सकते हैं उसकी कोई सीमा नहीं है! फ्रेमवर्क क्या है? फ्र

  1. रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स

    रूबी में स्ट्रक्ट क्या है? एक स्ट्रक्ट एक बिल्ट-इन रूबी क्लास है, इसका उपयोग वैल्यू ऑब्जेक्ट्स उत्पन्न करने वाली नई क्लासेस बनाने के लिए किया जाता है। एक वैल्यू ऑब्जेक्ट संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए उपयोग किया जाता है। यहां एक उदाहरण है: दो निर्देशांकों (x और y) के साथ एक Point।