Enumeration
özellik türüdür üyesi vardır Value
numaralandırma tek tek öğeleri (aslında bir iç sınıfı, ama fark burada önemli değil) temsil eden.
Böylece object WeekDay
bu tip üyeyi miras alır. Satır type WeekDay = Value
yalnı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.Value
ve 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 , Value
tür bir somut örneğini verir, Value
.
O kadar yazabilir olur val a, b, c = foo
Scala, ve her değer için a
, b
ve c
yöntem foo
tekrar tekrar çağrılır. Enumeration
bu numarayı, her bir değerin ayrı olması için dahili bir sayacı artırmak için kullanır.
Scala API belgelerini Enumeration
açıp üzerine tıklarsanız, Visibility: All
o yöntemin göründüğünü göreceksiniz.