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
, तो आपको वह तरीका दिखाई देगा।