रूबी में अनंत क्या है?
यह कुछ ऐसा है जिसका एक प्रारंभिक बिंदु है लेकिन कोई अंत नहीं है।
रूबी में, हम अनंत की इस अवधारणा को व्यक्त कर सकते हैं Float::INFINITY
. के साथ स्थिर।
आप सोच रहे होंगे कि यह कैसे उपयोगी है।
मुझे उदाहरणों के साथ समझाएं!
अंकगणितीय संक्रियाओं के परिणाम के रूप में अनंत
रूबी एक Infinity
देता है वस्तु, कुछ गणित संक्रियाओं के परिणाम के रूप में।
उदाहरण के लिए :
आप "शून्य से भाग" त्रुटि से परिचित हो सकते हैं।
यह रहा :
1/0 # ZeroDivisionError: divided by 0
लेकिन…
यदि आप फ्लोट का उपयोग करते हैं, तो आपको कुछ और मिलता है:
1/0.0 # Infinity
Infinity
!
लेकिन इतना ही नहीं।
यदि आप 0
. के विभाजन का प्रयास करते हैं द्वारा 0.0
, तो आपको एक और विशेष मूल्य मिलता है।
एक नज़र डालें :
0/0.0 # NaN
यह NaN क्या है?
इसका अर्थ है "एक संख्या नहीं", और जहाँ तक मुझे पता है, रूबी में यह एकमात्र स्थान है जहाँ आपको यह मान मिलेगा।
यह बात क्यों है?
यह आईईईई 754 विशिष्टता का हिस्सा है, जो बताता है कि फ्लोटिंग-पॉइंट ऑपरेशंस को कैसे व्यवहार करना चाहिए।
बीटीडब्ल्यू, कुछ संबंधित विधियां हैं :
nan?
finite?
infinite?
आप इन विधियों का उपयोग विशेष मूल्यों की जांच के लिए कर सकते हैं।
ये तरीके फ्लोट्स पर उपलब्ध हैं।
रूबी 2.4 के बाद से आप finite?
. का भी उपयोग कर सकते हैं &infinite?
पूर्णांकों के साथ।
अनंत रेंज कैसे बनाएं
ठीक है।
वह दिलचस्प था... आइए और उदाहरण देखें।
अब रेंज के साथ!
यहां एक अनंत श्रेणी है :
(1..Float::INFINITY).take(10) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
यह तब मददगार हो सकता है जब आपको सीमा के अंत की पहले से जानकारी न हो।
एक समस्या…
यह केवल शुरुआती मान के रूप में संख्याओं के साथ काम करता है।
उदाहरण :
("a"..Float::INFINITY) # ArgumentError: bad value for range
समाधान क्या है?
रूबी 2.6 के साथ, आप यह कर सकते हैं :
("a"..).take(5) # ["a", "b", "c", "d", "e"]
हाँ, यह कोई गलती नहीं है! इस श्रेणी का कोई अंतिम मान नहीं है, केवल "a"
. का प्रारंभिक मान है , फिर दो बिंदु ..
इसे कभी न खत्म होने वाली सीमा बनाने के लिए।
यह नया सिंटैक्स है।
यदि आप इसे काम करना चाहते हैं तो रूबी 2.6+ का उपयोग करें।
अनंत अधिकतम और न्यूनतम मान के रूप में
Infinity
. के लिए एक और व्यावहारिक उपयोग ?
खैर…
यह सबसे बड़ा है (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
यह कोड एक ओपन-सोर्स प्रोजेक्ट रूबोकॉप का है।
यहां बताया गया है कि यह कैसे काम करता है :
हम सबसे छोटे सरणी आकार को खोजने की कोशिश कर रहे हैं, लेकिन हमें उसके लिए एक प्रारंभिक मान की आवश्यकता है क्योंकि nil
का उपयोग करना आपको एक त्रुटि देगा।
आप एक बड़ी संख्या type टाइप कर सकते हैं और आशा है कि यह काफी है।
या आप Float::INFINITY
. का उपयोग कर सकते हैं , यह जानते हुए कि यह संभव सबसे बड़ी संख्या है।
सारांश
आपने रूबी में अनंत के बारे में सीखा है कि यह क्या है, यह कहां दिखाई दे सकता है और इसका उपयोग कैसे करना है।
कृपया इस लेख को शेयर करें ताकि अधिक से अधिक लोग इसका लाभ उठा सकें।
पढ़ने के लिए धन्यवाद!