Enumerationözellik türüdür üyesi vardır Valuenumaralandırma tek tek öğeleri (aslında bir iç sınıfı, ama fark burada önemli değil) temsil eden.
Böylece object WeekDaybu tip üyeyi miras alır. Satır type WeekDay = Valueyalnızca bir tür takma adıdır . Yararlıdır, çünkü onu başka bir yere aktardıktan sonra import WeekDay._, bu türü kullanabilirsiniz, örneğin:
def isWorkingDay(d: WeekDay) = ! (d == Sat || d == Sun)
Bunun yerine, minimal bir sürüm şu şekilde olacaktır:
object WeekDay extends Enumeration {
val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}
ve yok etmek zorunda içeriğini almak object WeekDay, ama sonra türünü kullanmak gerekir WeekDay.Valueve bireysel üyeleri nitelemek. Böylece örnek olur
def isWorkingDay(d: WeekDay.Value) = ! (d == WeekDay.Sat || d == WeekDay.Sun)
İkinci soru kelimesinin anlamı ile ilgili val Mon, ... = Value. Uygulamasına bakmazsanız, bu gerçekten çok kafa karıştırıcı Enumeration. Bu bir tipin görevi değil! Bunun yerine bir korunmuş aradığını aynı adı yöntemi , Valuetür bir somut örneğini verir, Value.
O kadar yazabilir olur val a, b, c = fooScala, ve her değer için a, bve cyöntem footekrar tekrar çağrılır. Enumerationbu numarayı, her bir değerin ayrı olması için dahili bir sayacı artırmak için kullanır.
Scala API belgelerini Enumerationaçıp üzerine tıklarsanız, Visibility: Allo yöntemin göründüğünü göreceksiniz.