मुझे आश्चर्य है कि मानक लाइब्रेरी पूरी तरह से null
-Free और - यदि नहीं - रुचि होगी कि उचित उपयोग-मामले मौजूद हैं, जहां null
लौटने पर कुछ Option
उदाहरण लौटने के लिए बेहतर है।कौन सा स्काला विधियां एक विकल्प के बजाय शून्य लौटती हैं और क्यों?
उत्तर
NamespaceBinding स्थानीय नामस्थान के लिए null
या निम्नलिखित मामले में एक अपरिभाषित इनपुट देता है।
$ scala
Welcome to Scala version 2.9.0.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_24).
Type in expressions to have them evaluated.
Type :help for more information.
scala> (<foo/>).scope.getURI("something")
res0: String = null
ऐसा क्यों है String
Option[URI]
के बजाय उपयोग कर रहा है, मैं नहीं जानता।
'scala.xml.Elem' से संबंधित है जो 'स्ट्रिंग' उपसर्ग मान लेता है जिसे किसी नामस्थान उपसर्ग के लिए' शून्य 'होने की उम्मीद है। फिर, यह क्यों नहीं है 'विकल्प [स्ट्रिंग]' मेरे बाहर है। –
कम से कम यह लगातार परेशान है .. –
मैं किसी के बारे में नहीं सोच सकता, इसलिए मैंने एपीआई (inurl: scala-lang.org/api return + null) में एक Google खोज की है और ऐसा लगता है कि यह किसी भी दस्तावेज के उपयोग को शून्य नहीं देता है।
कोई आंतरिक उपयोग मौजूद हो सकता है। ऐसा करने के लिए मैं सोच सकता हूं कि एकमात्र कारण अतिरिक्त कुछ वस्तु से बचने या जावा के साथ आसान एकीकरण से बचने के लिए होगा। दोनों असंभव प्रतीत होते हैं।
चूंकि स्कैला ज्यादातर समय 'रिटर्न' का उपयोग नहीं करता है, इसलिए यह खोज वास्तव में ज्यादा नहीं पकड़ पाएगी। –
मैं कोड में वापसी के बारे में बात नहीं कर रहा था, लेकिन टिप्पणी में वापस लौटें – thoredge
मानक पुस्तकालय में उपयोग की जाने वाली एकमात्र जगह null
वैकल्पिक रेगेक्स समूह हैं।
scala> val number = """(\d+)(\.\d+)?""".r // matches digits optionally followed by a . and more digits
number: scala.util.matching.Regex = (\d+)(\.\d+)?
scala> "12" match {
| case number(intPart, decimalPart) => (intPart, decimalPart)
| }
res0: (String, String) = (12,null)
मुझे लगता है, तर्क यहाँ है कि आप सभी समूहों के लिए Option[String]
उपयोग करने के लिए नहीं करना चाहती। यदि कोई समूह वैकल्पिक नहीं है, तो यह कोड अनावश्यक रूप से बेकार होगा। दुर्भाग्यवश, यदि समूह वैकल्पिक है तो संकलित समय पर यह ज्ञात नहीं है। इसलिए समूहों से मेल खाने के लिए यह सभी समूहों या null
के लिए या तो Option[String]
है।
मुझे वास्तव में यह तथ्य पसंद है कि रेगेक्स स्वचालित रूप से पैटर्न मैचर बन जाता है, और तथ्य यह है कि 90% मामलों के लिए आप सीधे 'स्ट्रिंग' चाहते हैं; लेकिन चूंकि स्काला लगभग पूरी तरह से अजीब अपवादों से मुक्त है, इसलिए यह एक अच्छा विचार हो सकता है अगर उन्होंने स्थिरता के लिए 'विकल्प [स्ट्रिंग]' का उपयोग किया हो। 'विकल्प [स्ट्रिंग]' और/या 'सूची' अक्सर जेसन को पार्स करते समय आता है और मुझे नहीं लगता कि मैंने उन्हें बहुत ध्यान दिया क्योंकि मैं उन्हें समझ के भीतर उपयोग करता हूं। –
@ यूजीन टिप: यदि आप प्रकार निर्दिष्ट करते हैं, तो यह 'शून्य' के खिलाफ मेल नहीं खाएगा। उदाहरण के लिए, 'केस नंबर (इंटपार्ट: स्ट्रिंग, दशमलवपार्ट: स्ट्रिंग) 'ऊपर की स्ट्रिंग से मेल नहीं खाएगा। –
- 1. अमरूद: क्यों कन्स्ट्रक्टर के बजाय विधियां बनाते हैं?
- 2. कंसोल में परिवर्तनीय घोषणाएं "अपरिभाषित" क्यों लौटती रहती हैं?
- 3. कौन सा तेज़ है और क्यों?
- 4. हैशकोड() और getClass() देशी विधियां क्यों हैं?
- 5. शून्य होने पर कौन सा कन्स्ट्रक्टर चुना जाता है?
- 6. जेएसएफ बनाम एचटीएमएल (जेएसपी)। कौन सा चुनना है? और क्यों?
- 7. एनएसएसटींग तुलना करें: विकल्प: सीमा: - कोई विकल्प के लिए कौन सा मान पास करना है?
- 8. जावा में शून्य के लिए कौन सा अधिभार चुना जाएगा?
- 9. मोक के साथ "लघु सर्किटिंग" शून्य विधियां?
- 10. क्लिकऑन के लिए कौन से विकल्प हैं?
- 11. कास्टिंग (int?) शून्य बनाम नया int?() - कौन सा बेहतर है?
- 12. रनटाइम लाइब्रेरी एक लिंकर विकल्प के बजाय एक कंपाइलर विकल्प क्यों है?
- 13. डब्ल्यूसीएफ टेस्ट क्लाइंट के लिए कौन से विकल्प हैं?
- 14. कौन सा फ़्लोटिंग-पॉइंट तुलना अधिक सटीक है, और क्यों?
- 15. शून्य चौड़ाई सा क्षेत्र
- 16. एंड्रॉइड: व्यूफ्लिपर या व्यूपेगर - बेहतर विकल्प कौन सा है?
- 17. ओरेकल एक्सई या माईएसक्यूएल, मुझे कौन सा विकल्प चुनना चाहिए?
- 18. कौन सा HTML डॉकटाइप?
- 19. कौन सा बढ़ावा पुस्तकालय केवल शीर्षलेख हैं?
- 20. एक नियंत्रक कौन सा है और स्प्रिंग एमवीसी में हैंडलर मैपिंग कौन सा है?
- 21. स्थैतिक तरीके विधियां क्यों मौजूद हैं?
- 22. जावा कतार कार्यान्वयन, कौन सा?
- 23. गैर-विशेषाधिकार प्राप्त विधियां क्यों बनाते हैं?
- 24. antlr3 C# पार्सर विधियां निजी क्यों हैं?
- 25. इनमें से कौन सा शून्य सूचक बन जाएगा?
- 26. कौन सा StringComparer के संस्करण
- 27. जावा और पायथन कचरा संग्रहण विधियां अलग क्यों हैं?
- 28. PHP: मैक्रीप्ट - कौन सा मोड?
- 29. SQL सर्वर डेटाबेस में सबसे आम आईडी प्रकार कौन सा है, और कौन सा बेहतर है?
- 30. Node.js के लिए कौन सा MongoDB ड्राइवर?
'शून्य' लौटने के लिए एकमात्र उचित उपयोग केस तब होता है जब आप एक लाइब्रेरी का उपयोग कर रहे होते हैं जो "नतीजे" को "नतीजे" के संकेत के रूप में कॉलबैक से वापस करने की अपेक्षा करता है। स्काला कोड से विरासत जावा पुस्तकालयों से निपटने के दौरान अक्सर यह एक आवश्यक बुराई होती है। –
सामान्य रूप से, स्कैला लाइब्रेरी विधियां या तो विकल्प लौटाएंगी या अगर अपरिहार्य कहा जाता है तो एक अपवाद फेंक देगा (उदाहरण के लिए, सिर और आखिरी सूची में)। मैं किसी भी वापसी के बारे में नहीं जानता। –