मैं null
इसके (उदाहरण के लिए) होने के बजाय (संयुक्त राष्ट्र) की सुविधा के बारे में पढ़ रहा हूं Maybe
। इस लेख को पढ़ने के बाद , मुझे विश्वास है कि इसका उपयोग करना बेहतर होगाMaybe
(या कुछ इसी तरह)। हालाँकि, मुझे यह देखकर हैरानी होती है कि सभी "अच्छी तरह से जानी जाने वाली" अनिवार्य या ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज का उपयोग अभी भी किया जाता है null
(जो उन प्रकारों के लिए अनियंत्रित एक्सेस की अनुमति देता है जो 'कुछ भी नहीं' मूल्य का प्रतिनिधित्व कर सकते हैं), और जो कि Maybe
ज्यादातर कार्यात्मक प्रोग्रामिंग भाषाओं में उपयोग किया जाता है।
एक उदाहरण के रूप में, निम्नलिखित C # कोड देखें:
void doSomething(string username)
{
// Check that username is not null
// Do something
}
यहाँ कुछ बदबू आ रही है ... अगर तर्क शून्य है तो हमें जाँच क्यों करनी चाहिए? क्या हमें यह नहीं मान लेना चाहिए कि हर चर में किसी वस्तु का संदर्भ होता है? जैसा कि आप देख सकते हैं, समस्या यह है कि परिभाषा के अनुसार लगभग सभी चर में एक शून्य संदर्भ हो सकता है। क्या होगा अगर हम तय कर सकते हैं कि कौन से चर "अशक्त" हैं और कौन से नहीं? यह डिबगिंग करते समय और "NullReferenceException" की तलाश में हमें बहुत सारे प्रयासों से बचाएगा। कल्पना करें कि, डिफ़ॉल्ट रूप से, किसी भी प्रकार में अशक्त संदर्भ नहीं हो सकता है । इसके बजाय, आप स्पष्ट रूप से बताएंगे कि एक चर में एक शून्य संदर्भ हो सकता है , केवल अगर आपको वास्तव में इसकी आवश्यकता है। शायद इसके पीछे का विचार है। यदि आपके पास एक फ़ंक्शन है जो कुछ मामलों में विफल रहता है (उदाहरण के लिए शून्य से विभाजन), तो आप वापस लौट सकते हैंMaybe<int>
, स्पष्ट रूप से बताते हुए कि परिणाम एक int हो सकता है, लेकिन कुछ भी नहीं! यह अशक्त के बजाय शायद पसंद करने का एक कारण है । यदि आप अधिक उदाहरणों में रुचि रखते हैं, तो मैं इस लेख को पढ़ने का सुझाव देता हूं ।
तथ्य यह है कि डिफ़ॉल्ट रूप से अधिकांश प्रकारों को अशक्त बनाने के नुकसान के बावजूद, अधिकांश ओओ प्रोग्रामिंग भाषाएं वास्तव में ऐसा करती हैं। यही कारण है कि मुझे आश्चर्य है:
- किस तरह के तर्कों आप के लिए होता है को लागू करने
null
के बजाय अपने प्रोग्रामिंग भाषा मेंMaybe
? क्या सभी कारण हैं या यह सिर्फ "ऐतिहासिक सामान" है?
कृपया सुनिश्चित करें कि आप इस प्रश्न का उत्तर देने से पहले अशक्त और शायद अंतर के बीच अंतर को समझते हैं।
null
या अपनी अवधारणा मौजूद नहीं है (iirc हास्केल ऐसे ही एक उदाहरण है)।
null
लंबे समय से उनमें मौजूद थे। बस उसे गिराना आसान नहीं है।