2012-11-24 24 views

उत्तर

52

Unit एक ऐसा प्रकार है जिसमें बिल्कुल एक मूल्य है - Unit type देखें। दूसरी तरफ, Nothing में कोई संभावित मान - Bottom type देखें।

कोई फ़ंक्शन जो कुछ भी वापस नहीं करता है, में वापसी प्रकार Unit होना चाहिए। अगर यह Nothing था तो फ़ंक्शन परिणाम नहीं दे सका। फ़ंक्शन से बाहर निकलने का एकमात्र तरीका अपवाद से होगा।


Nothing का एक अलग तरीके से उपयोग किया जाता है। यह दो गुण की विशेषता है:

  1. Nothing (Null सहित) हर दूसरे प्रकार का एक उप-प्रकार है।
  2. इस प्रकार के कोई उदाहरण मौजूद नहीं हैं।

यह उपयोगी कब है? 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 तार्किक सत्य से मेल खाती है और NothingCurry-Howard isomorphism, जहां हम प्रस्ताव और सबूत के रूप में कार्य के रूप में प्रकार देख तहत तार्किक झूठी से मेल खाती है,।

13

Unit का अर्थ है कि (ए) फ़ंक्शन में इनपुट और आउटपुट जैसे दुष्प्रभाव होते हैं, (बी) ये साइड इफेक्ट फ़ंक्शन का मुख्य लक्ष्य हैं। बेशक, फ़ंक्शन का दुष्प्रभाव हो सकता है भले ही इसका प्रकार Unit से अलग हो। क्योंकि (क) यह कोई मान (यूनिट exectly एक मूल्य है - ()) है

Nothing, स्काला में एक विशेष प्रकार का है, तो आप वापसी प्रकार Nothing का मूल्य नहीं कर सकते हैं और (ख) यह हर दूसरे प्रकार की एक उप-प्रकार है । इसका मतलब है कि अगर कुछ Nothing टाइप करता है, तो इसका इस्तेमाल हर जगह जहां अन्य प्रकार की आवश्यकता होती है, लेकिन इसका कोई परिणाम नहीं मिलेगा। इसका उपयोग अपवादों से निपटने के लिए किया जाता है - throw अभिव्यक्ति में Nothing का एक प्रकार है, इसलिए इसे मूल रूप से किसी प्रोग्राम में उपयोग किया जा सकता है।

बस, Nothing का मतलब है कि एक त्रुटि हुई और कुछ भी वापस नहीं किया गया था, जबकि Unit का अर्थ है दुष्प्रभाव थे।

Programming in Scala उस की एक अच्छी व्याख्या है।

6

पेट्र के उत्तर में एक पहलू जोड़ने के लिए: Nothing टाइप पदानुक्रम में एक महत्वपूर्ण भूमिका निभाता है। यह एक नीचे का प्रकार है। इसका मतलब है कि यह हर दूसरे प्रकार का एक उप प्रकार है, जो Any के विपरीत है, जो सबकुछ का एक सुपरटेप है। आप एक अच्छा स्पष्टीकरण here पा सकते हैं।

+1

@downvoters: जब मैंने यह जवाब लिखा, तो पेट्र के जवाब ने नीचे के प्रकार के पहलू का उल्लेख नहीं किया। उसने केवल बाद में इसे जोड़ा। – bluenote10

संबंधित मुद्दे