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 = fooScala, এবং প্রতিটি মান জন্য a, bএবং cপদ্ধতি fooআবার এবং আবার ডাকা হবে। Enumerationঅভ্যন্তরীণ কাউন্টারকে বাড়ানোর জন্য এই কৌশলটি ব্যবহার করে যাতে প্রতিটি মান পৃথক হয়।
আপনি যদি স্কালা এপিআই ডকসগুলি খুলেন Enumerationএবং ক্লিক করেন Visibility: All, আপনি সেই পদ্ধতিটি উপস্থিত দেখবেন।