Enumeration
विशेषता एक प्रकार सदस्य Value
गणन के व्यक्तिगत तत्वों का प्रतिनिधित्व (यह वास्तव में एक आंतरिक वर्ग है, लेकिन अंतर बात यहाँ नहीं है) है।
इस प्रकार object WeekDay
सदस्य टाइप करते हैं। लाइन type WeekDay = Value
सिर्फ टाइप उपनाम है। यह उपयोगी है, क्योंकि तुम्हारे जाने के बाद import WeekDay._
साथ कहीं और यह आयात करते हैं तो उस प्रकार, जैसे उपयोग कर सकते हैं:
def isWorkingDay(d: WeekDay) = ! (d == Sat || d == Sun)
इसके बजाय, एक न्यूनतम संस्करण सिर्फ होगा:
object WeekDay extends Enumeration {
val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}
और आप नहीं हैobject WeekDay
की सामग्री आयात करें, लेकिन फिर आपको WeekDay.Value
टाइप करने और व्यक्तिगत सदस्यों को अर्हता प्राप्त करने की आवश्यकता होगी। इसलिए उदाहरण बन जाएगा
def isWorkingDay(d: WeekDay.Value) = ! (d == WeekDay.Sat || d == WeekDay.Sun)
दूसरा सवाल val Mon, ... = Value
के अर्थ के बारे में है। यदि आप Enumeration
के कार्यान्वयन को नहीं देखते हैं तो यह वास्तव में बहुत भ्रमित है। यह एक प्रकार का असाइनमेंट नहीं है! यह एक ही नाम, Value
की एक सुरक्षित विधि को कॉल करने के बजाय है, जो Value
प्रकार का ठोस उदाहरण देता है।
यह इतना है कि आप स्काला में val a, b, c = foo
लिख सकते हैं, और प्रत्येक मान a
, b
, और c
विधि के लिए foo
बार-बार बुलाया जाएगा। Enumeration
एक आंतरिक काउंटर को बढ़ाने के लिए इस चाल का उपयोग करता है ताकि प्रत्येक मान व्यक्तिगत हो।
यदि आप Enumeration
के लिए स्कैला एपीआई दस्तावेज़ खोलते हैं और Visibility: All
पर क्लिक करते हैं, तो आप उस विधि को प्रदर्शित करेंगे।
मैंने स्केल गणना और विकल्पों के बारे में एक छोटा सा अवलोकन लिखा है, तो आप इसे उपयोगी पा सकते हैं: pedrorijo.com/blog/scala-enums/ – pedrorijo91