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

रूबी इन्फिनिटी:यह कैसे काम करता है और यह क्यों मायने रखता है?

रूबी में अनंत क्या है?

यह कुछ ऐसा है जिसका एक प्रारंभिक बिंदु है लेकिन कोई अंत नहीं है।

रूबी में, हम अनंत की इस अवधारणा को व्यक्त कर सकते हैं 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 . का उपयोग कर सकते हैं , यह जानते हुए कि यह संभव सबसे बड़ी संख्या है।

सारांश

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

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

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


  1. एक मैट्रिक्स क्या है और रूबी में इसका उपयोग कैसे करें?

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

  1. रूबी ऑन रेल्स क्या है और यह क्यों उपयोगी है?

    रूबी ऑन रेल्स (कभी-कभी RoR) सबसे लोकप्रिय ओपन-सोर्स वेब एप्लिकेशन फ्रेमवर्क है। इसे रूबी प्रोग्रामिंग भाषा के साथ बनाया गया है। आप अनुप्रयोगों को बनाने में मदद करने के लिए रेल का उपयोग कर सकते हैं, सरल से जटिल तक, रेल के साथ आप क्या हासिल कर सकते हैं इसकी कोई सीमा नहीं है! ढांचा क्या है? फ़्रेम

  1. रूबी में स्ट्रक्चर और ओपनस्ट्रक्चर का उपयोग कैसे करें?

    रूबी में स्ट्रक्चर क्या है? एक संरचना एक अंतर्निहित रूबी वर्ग है, इसका उपयोग नए वर्ग बनाने के लिए किया जाता है जो मूल्य वस्तुओं का उत्पादन करते हैं। संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए एक मूल्य वस्तु का उपयोग किया जाता है। यहां एक उदाहरण दिया गया है : एक Point दो निर्देशांकों के साथ