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

हम शून्य का उपयोग क्यों करते हैं?

मैं रूबी कोड के एक टुकड़े के बारे में एक दोस्त के साथ बातचीत कर रहा था और वापसी मूल्यों का विषय सामने आया…

...और निश्चित रूप से, nil हमेशा उस बातचीत का हिस्सा होता है।

उस दिन बाद में, मैं सोने के लिए बिस्तर पर था, सोच रहा था कि हम nil का उपयोग क्यों करते हैं? ?

मैंने सोचा कि अगले दिन इस बारे में लिखना एक अच्छा विचार होगा, और मैं यहाँ हूँ। मुझे आशा है कि आपको यह दिलचस्प लगेगा और कुछ नया सीखेंगे!

वापसी मूल्यों और अपेक्षित व्यवहार पर

जब आप select . जैसी किसी विधि को कॉल करते हैं आपको हमेशा एक सरणी मिलने वाली है।

भले ही चयन करने के लिए कुछ भी न हो।

उदाहरण :

[1,2,3].select {}
# []

[1,2,3].select(&:even?)
# [2]

लेकिन यह महत्वपूर्ण क्यों है?

अच्छा सवाल!

यदि आपको हमेशा एक सरणी मिलती है तो आप सरणी विधियों को कॉल कर सकते हैं (size , empty? , push ...) बिना यह जांचे कि क्या आप वास्तव में किसी सरणी के साथ काम कर रहे हैं

यह एक अच्छी बात है क्योंकि क्लास चेकिंग से हाई कपलिंग होती है।

यदि आप अधिक लचीला कोड लिखना चाहते हैं तो “यह कौन सी कक्षा है” की जांच करने से बचें जितना हो सके।

एकल मान लौटाना

ठीक है, लेकिन find . जैसी विधि का उपयोग करने के बारे में क्या? , जो केवल एक मान लौटाता है?

यदि तत्व मिल जाता है तो यह काम करता है:

[1,2,3].find { |n| n == 2 }
# 2

अगर कोई मेल नहीं है, तो find कुछ वापस करना है, यह false लौटा सकता है , लेकिन अगर हम इस रिटर्न वैल्यू पर एक विधि को कॉल करने की उम्मीद कर रहे हैं तो हमें एक अपवाद मिलेगा।

यहां है जहां nil आता है, हम इसका उपयोग करते हैं क्योंकि यह एक सामान्य नल ऑब्जेक्ट के लिए सबसे नज़दीकी चीज़ है जिसे हम प्राप्त कर सकते हैं।

जैसा कि आपको शून्य पर मेरे पिछले लेख से याद होगा, मैंने आपको दिखाया था कि कैसे nil to_i . जैसी विधियों वाला एक वर्ग है , to_s &to_a

यह आपको Array() . जैसी विधियों का उपयोग करने की अनुमति देता है , और String() किसी वस्तु को इन प्रकारों में बदलने के लिए।

उदाहरण :

String(123)
# "123"

String(nil)
# ""

Array(nil)
# []

यह स्ट्रिंग इंटरपोलेशन में भी आता है:

"abc#{nil}dfg"

स्ट्रिंग प्रक्षेप कॉल to_s इंटरपोलेशन ब्लॉक के अंदर क्या है इसका मूल्यांकन करने के परिणाम पर। तो अगर आपके पास #{1 + 1} . है यह 2.to_s . में बदल जाता है ।

अब समस्या nil . के साथ आता है जब आप इसकी अपेक्षा नहीं करते हैं , आपको लगता है कि यह कोई वस्तु है जो foo . का जवाब देती है विधि, लेकिन ऐसा नहीं है, इसलिए आपको खतरनाक NoMethodError . मिलता है अपवाद।

उस स्थिति में, आप नल ऑब्जेक्ट पैटर्न को लागू करना चाहते हैं, जैसा कि मैंने इस आलेख में वर्णन किया है। अन्य समाधानों में fetch . का उपयोग करना शामिल है डिफ़ॉल्ट मान के साथ विधि और डिफ़ॉल्ट मान का कोई मतलब नहीं होने पर अपवाद उठाना।

सारांश

आपने सीखा है कि हम nil का उपयोग क्यों करते हैं , nil . पर कॉलिंग विधियों से आने वाले अपवादों से कैसे बचें मूल्य, और अधिक विश्वसनीय कोड कैसे लिखें।

अपने कोड पर एक नज़र डालें और देखें कि क्या आप कुछ टाइप-चेकिंग कोड देख सकते हैं (is_a? / kind_of? / === ) आज आपने जो सीखा है उसका उपयोग करके आप उस कोड को कैसे सुधार सकते हैं?


  1. Windows PC पर Google प्रमाणक का उपयोग कैसे करें

    Google प्रमाणक उपयोगी हो सकता है, लेकिन यह कष्टप्रद है कि Google ने अभी तक डेस्कटॉप के लिए आधिकारिक ऐप नहीं बनाया है। हालांकि, आप अन्य माध्यमों से अपने विंडोज पीसी पर Google प्रमाणक का उपयोग कर सकते हैं। आइए जानें कि आप पीसी पर Google प्रमाणक का उपयोग कैसे कर सकते हैं। Google के 2FA को आपके पीसी में

  1. हम HTML पेज में हेड टैग का उपयोग क्यों करते हैं?

    टैग एक HTML पृष्ठ में सभी शीर्ष तत्वों के लिए एक कंटेनर है। … टैग जोड़ने के लिए काफी आसान है। इसके तहत दस्तावेज़ का शीर्षक या मेटा जानकारी, शैली, स्क्रिप्ट आदि जोड़ें। बस ध्यान रखें, … टैग … टैग के अंदर जुड़ जाते हैं। उदाहरण HTML पृष्ठ में टैग जोड़ने के लिए आप निम्न कोड चलाने का प्रयास कर सकते ह

  1. हम HTML दस्तावेज़ में DOCTYPES का उपयोग क्यों करते हैं?

    HTML टैग का उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि दस्तावेज़ किस HTML संस्करण का उपयोग कर रहा है। इसे दस्तावेज़ प्रकार की घोषणा (डीटीडी) कहा जाता है। घोषणा पहली चीज है जिसे आप HTML दस्तावेज़ में देख सकते हैं। यह टैग से पहले जुड़ जाता है। टैग का अंत टैग नहीं है!. घोषणा HTML 4.01 में 3 संभ