अंकगणितीय संक्रियाओं के परिणाम के रूप में 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 के बारे में सीखा, यह क्या है, यह कहां दिखाई दे सकता है और इसका उपयोग कैसे करें।
कृपया इस आर्टिकल को शेयर करें ताकि अधिक लोग इससे लाभ उठा सकें।
पढ़ने के लिए धन्यवाद!