दोनों प्रकार Unit
और Nothing
एक ऐसा फ़ंक्शन इंगित करता है जो कुछ भी वापस नहीं करता है। उनके बीच क्या अंतर है?यूनिट और कुछ भी नहीं के बीच क्या अंतर है?
उत्तर
Unit
एक ऐसा प्रकार है जिसमें बिल्कुल एक मूल्य है - Unit type देखें। दूसरी तरफ, Nothing
में कोई संभावित मान - Bottom type देखें।
कोई फ़ंक्शन जो कुछ भी वापस नहीं करता है, में वापसी प्रकार Unit
होना चाहिए। अगर यह Nothing
था तो फ़ंक्शन परिणाम नहीं दे सका। फ़ंक्शन से बाहर निकलने का एकमात्र तरीका अपवाद से होगा।
Nothing
का एक अलग तरीके से उपयोग किया जाता है। यह दो गुण की विशेषता है:
Nothing
(Null
सहित) हर दूसरे प्रकार का एक उप-प्रकार है।- इस प्रकार के कोई उदाहरण मौजूद नहीं हैं।
यह उपयोगी कब है? None
पर विचार करें:
object None extends Option[Nothing]
क्योंकि Option
अपने प्रकार पैरामीटर में covariant है और Nothing
सब कुछ का एक उपप्रकार है, Option[Nothing]
हर प्रकार A
के लिए Option[A]
की एक उप-प्रकार है। इसलिए, हम एक ऑब्जेक्ट None
बना सकते हैं जो प्रत्येक A
के लिए Option[A]
का उप प्रकार है। यह उचित है, क्योंकि Nothing
को तत्काल नहीं किया जा सकता है इसलिए Option[Nothing]
हमेशा मूल्य के बिना होगा। इसी तरह
object Nil extends List[Nothing]
Unit
तार्किक सत्य से मेल खाती है और Nothing
Curry-Howard isomorphism, जहां हम प्रस्ताव और सबूत के रूप में कार्य के रूप में प्रकार देख तहत तार्किक झूठी से मेल खाती है,।
Unit
का अर्थ है कि (ए) फ़ंक्शन में इनपुट और आउटपुट जैसे दुष्प्रभाव होते हैं, (बी) ये साइड इफेक्ट फ़ंक्शन का मुख्य लक्ष्य हैं। बेशक, फ़ंक्शन का दुष्प्रभाव हो सकता है भले ही इसका प्रकार Unit
से अलग हो। क्योंकि (क) यह कोई मान (यूनिट exectly एक मूल्य है - ()
) है
Nothing
, स्काला में एक विशेष प्रकार का है, तो आप वापसी प्रकार Nothing
का मूल्य नहीं कर सकते हैं और (ख) यह हर दूसरे प्रकार की एक उप-प्रकार है । इसका मतलब है कि अगर कुछ Nothing
टाइप करता है, तो इसका इस्तेमाल हर जगह जहां अन्य प्रकार की आवश्यकता होती है, लेकिन इसका कोई परिणाम नहीं मिलेगा। इसका उपयोग अपवादों से निपटने के लिए किया जाता है - throw
अभिव्यक्ति में Nothing
का एक प्रकार है, इसलिए इसे मूल रूप से किसी प्रोग्राम में उपयोग किया जा सकता है।
बस, Nothing
का मतलब है कि एक त्रुटि हुई और कुछ भी वापस नहीं किया गया था, जबकि Unit
का अर्थ है दुष्प्रभाव थे।
Programming in Scala उस की एक अच्छी व्याख्या है।
पेट्र के उत्तर में एक पहलू जोड़ने के लिए: Nothing
टाइप पदानुक्रम में एक महत्वपूर्ण भूमिका निभाता है। यह एक नीचे का प्रकार है। इसका मतलब है कि यह हर दूसरे प्रकार का एक उप प्रकार है, जो Any
के विपरीत है, जो सबकुछ का एक सुपरटेप है। आप एक अच्छा स्पष्टीकरण here पा सकते हैं।
- 1. $ और $$ के बीच क्या अंतर है?
- 2. # {} $ {} और% {} के बीच क्या अंतर है?
- 3. क्या एक RecordSet में rs.close रु बनाम = कुछ भी नहीं के बीच का अंतर
- 4. के बीच क्या अंतर है:। और: आर !?
- 5. पर्ल में नए कुछ :: कक्षा और कुछ :: कक्षा-> नया() के बीच क्या अंतर है?
- 6. 'इन इन' और 'मौजूद नहीं' के बीच क्या अंतर है?
- 7. के बीच क्या अंतर है?
- 8. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 9. भिन्नता और '-' के बीच क्या अंतर है?
- 10. "$^एन" और "$ +" के बीच क्या अंतर है?
- 11. क्यों sprintf() आउटपुट कुछ भी नहीं है?
- 12. किसी भी सूची ([_]) और कुछ भी (_)
- 13. अंतर और कहां के बीच क्या अंतर है?
- 14. फ़िंग और PHPUnderControl के बीच क्या अंतर है?
- 15. सिग्नल को अनदेखा करने और पर्ल में कुछ भी करने के लिए कहने के बीच क्या अंतर है?
- 16. स्कैलाटेस्ट और स्कैला स्पेक्स यूनिट टेस्ट फ्रेमवर्क के बीच क्या अंतर है?
- 17. फिर से फेंकने वाले पैरामीटर-कम पकड़ के बीच अंतर और कुछ भी नहीं कर रहा है?
- 18. क्या बीच का अंतर है :: और ::: स्काला
- 19. ओरेकल नल और खाली तारों के बीच अंतर नहीं है?
- 20. क्या न्यूटिट और माइक्रोसॉफ्ट के यूनिट टेस्टिंग फ्रेमवर्क (वीएस 2008) के बीच वास्तविक अंतर हैं?
- 21. "। +" और "। +?" के बीच अंतर
- 22. file_get_contents और fread बीच क्या अंतर है
- 23. window.onload = init() के बीच क्या अंतर है; और window.onload = init;
- 24. php.ini में एक्सटेंशन और zend_extension के बीच क्या अंतर है?
- 25. एन्कोड/डीकोड के बीच क्या अंतर है?
- 26. अपवाद के .TOString() और मैसेज के बीच क्या अंतर है?
- 27. सार कक्षा और एक मिक्सिन के बीच क्या अंतर है?
- 28. आरएसपीईसी में, नकली और डबल के बीच क्या अंतर है?
- 29. घोषणात्मक और अनिवार्य प्रोग्रामिंग के बीच क्या अंतर है?
- 30. 7zip के 7z.sfx और 7zsd.sfx के बीच क्या अंतर है?
@downvoters: जब मैंने यह जवाब लिखा, तो पेट्र के जवाब ने नीचे के प्रकार के पहलू का उल्लेख नहीं किया। उसने केवल बाद में इसे जोड़ा। – bluenote10