Класс scala.Enumeration
@SerialVersionUID(8476000850333817230L)
Определяет конечное множество значений, специфичных для перечисления. Обычно эти значения перечисляют все возможные формы, которые может принять что-либо, и предоставляют лёгкую альтернативу классам с разными вариантами.
Каждый вызов метода Value добавляет новое уникальное значение в перечисление. Для доступа эти значения обычно определяются как val члены перечисления.
Все значения в перечислении имеют общий уникальный тип, определённый как Value член типа перечисления (Value выбранный по стабильному идентификатору пути экземпляра перечисления).
Значения НЕ ДОЛЖНЫ добавляться в перечисление после его создания; это делает перечисление небезопасным для многопоточного доступа. Если значения добавляются в перечисление из нескольких потоков (несинхронизированным способом) после создания, поведение перечисления не определено.
| Параметры значения |
|
|---|---|
| Пример |
// Define a new enumeration with a type alias and work with the full set of enumerated values
object WeekDay extends Enumeration {
type WeekDay = Value
val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}
import WeekDay._
def isWorkingDay(d: WeekDay) = ! (d == Sat || d == Sun)
WeekDay.values filter isWorkingDay foreach println
// output:
// Mon
// Tue
// Wed
// Thu
// Fri
// Example of adding attributes to an enumeration by extending the Enumeration.Val class
object Planet extends Enumeration {
protected case class PlanetVal(mass: Double, radius: Double) extends super.Val {
def surfaceGravity: Double = Planet.G * mass / (radius * radius)
def surfaceWeight(otherMass: Double): Double = otherMass * surfaceGravity
}
import scala.language.implicitConversions
implicit def valueToPlanetVal(x: Value): PlanetVal = x.asInstanceOf[PlanetVal]
val G: Double = 6.67300E-11
val Mercury = PlanetVal(3.303e+23, 2.4397e6)
val Venus = PlanetVal(4.869e+24, 6.0518e6)
val Earth = PlanetVal(5.976e+24, 6.37814e6)
val Mars = PlanetVal(6.421e+23, 3.3972e6)
val Jupiter = PlanetVal(1.9e+27, 7.1492e7)
val Saturn = PlanetVal(5.688e+26, 6.0268e7)
val Uranus = PlanetVal(8.686e+25, 2.5559e7)
val Neptune = PlanetVal(1.024e+26, 2.4746e7)
}
println(Planet.values.filter(_.radius > 7.0e6))
// output:
// Planet.ValueSet(Jupiter, Saturn, Uranus, Neptune)
|
| Надтипы | |
| Известные подтипы | |
| Тип «Я сам» |
Классы
Исходный код@SerialVersionUID(0.-(3501153230598116017L))
Класс, реализующий тип scala.Enumeration.Value. Этот класс можно переопределить, чтобы изменить поведение именования и идентификации целых чисел перечисления.
Исходный код@SerialVersionUID(7091335633555234129L)
Тип перечисляемых значений.
Исходный код
Порядок по id для значений этого набора.
Исходный код@SerialVersionUID(7229671200427364242L)
класс ValueSet extends AbstractSet[Value] with SortedSet[Value] with SortedSetOps[Value, SortedSet, ValueSet] with StrictOptimizedIterableOps[Value, Set, ValueSet] with Serializable
Класс для наборов значений. Итерация по этому набору даст значения в порядке возрастания их id.
| Параметры значения |
|
|---|---|
| Компаньон | объект |
Исходный код@SerialVersionUID(3L)
Объект-фабрика для наборов значений
| Компаньон | класс |
|---|
Конструкторы
Исходный код
def this()
Конкретные методы
Исходный код
Создаёт новое значение, которое является частью этого перечисления.
Исходный код
Создаёт новое значение, которое является частью этого перечисления, идентифицированное целым числом i.
| Параметры значения |
|
|---|---|
| Возвращает | Новое значение, идентифицированное |
Исходный код
Создаёт новое значение, которое является частью этого перечисления, с именем name.
| Параметры значения |
|
|---|---|
| Возвращает | Новое значение с именем |
Исходный код
Создаёт новое значение, которое является частью этого перечисления, с именем name и идентификатором i.
| Параметры значения |
|
|---|---|
| Возвращает | Новое значение с указанным идентификатором |
Исходный код
Значение этого перечисления с заданным идентификатором x
Исходный код
Число, на единицу больше наибольшего целого числа, используемого для идентификации значений в этом перечислении.
Исходный код
защищённый метод readResolve(): AnyRef
Исходный код
Имя этого перечисления.
| Классы определения | Any |
|---|
Исходный код
Значения этого перечисления как множество.
Исходный код
Возвращает Value из этого Enumeration, имя которого совпадает с аргументом s. Имена определяются автоматически через рефлексию.
| Параметры значения |
|
|---|---|
| Возвращает | значение |
| Исключения |
|
Конкретные поля
Source
Целое число, используемое для идентификации следующего созданного значения.
Source
Строка, используемая для именования следующего созданного значения.
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/Enumeration.html