Класс Enumeration.Enumeration
Определяет конечный набор значений, специфичных для перечисления. Обычно эти значения перечисляют все возможные формы, которые может принимать что-либо, и предоставляют легкую альтернативу классам case.
Каждый вызов метода 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)
|
| Супертипы | |
| Известные подтипы | |
| Тип self |
Классы
Исходный код
Класс, реализующий тип scala.Enumeration.Value. Этот класс можно переопределить, чтобы изменить поведение именования и идентификации целых чисел перечисления.
Исходный код
Тип перечисляемых значений.
Исходный код
Порядок по идентификатору для значений этого набора.
Исходный код
класс ValueSet extends AbstractSet[Value] with SortedSet[Value] with SortedSetOps[Value, SortedSet, ValueSet] with StrictOptimizedIterableOps[Value, Set, ValueSet] with Serializable
Класс для наборов значений. При итерации по этому набору значения будут возвращаться в порядке возрастания их идентификаторов.
| Параметры значения |
|
|---|---|
| Компаньон | объект |
Исходный код
Объект-фабрика для наборов значений
| Компаньон | класс |
|---|
Конструкторы
Исходный код
def this()
Конкретные методы
Исходный код
Создает новое значение, являющееся частью этого перечисления.
Исходный код
Создает новое значение, являющееся частью этого перечисления, идентифицированное целым числом i.
| Параметры значения |
|
|---|---|
| Возвращает | Новое значение, идентифицированное |
Исходный код
Создает новое значение, являющееся частью этого перечисления, именуемое name.
| Параметры значения |
|
|---|---|
| Возвращает | Новое значение, именуемое |
Исходный код
Создает новое значение, являющееся частью этого перечисления, именуемое name и идентифицированное целым числом i.
| Параметры значения |
|
|---|---|
| Возвращает | Новое значение с указанным идентификатором |
Исходный код
Значение этого перечисления с заданным идентификатором x
Исходный код
Целое число, на единицу больше наибольшего целого числа, используемого для идентификации значений в этом перечислении.
Исходный код
защищенный def readResolve(): AnyRef
Исходный код
Имя этого перечисления.
| Определяющие классы | Any |
|---|
Исходный код
Значения этого перечисления в виде набора.
Исходный код
Возвращает Value из этого перечисления Enumeration, имя которого соответствует переданному аргументу s. Имена определяются автоматически с помощью рефлексии.
| Параметры значения |
|
|---|---|
| Возвращает | значение |
| Исключения |
|
Конкретные поля
Исходный код
Целое число, используемое для идентификации следующего созданного значения.
Source
Строка, используемая для именования следующего создаваемого значения.
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/Enumeration.html