Spec-Zone.ru › Scala 3.1

Класс scala.Enumeration

Исходный код

@SerialVersionUID(8476000850333817230L)
абстрактный класс Enumeration(initial: Int) extends Serializable

Определяет конечное множество значений, специфичных для перечисления. Обычно эти значения перечисляют все возможные формы, которые может принять что-либо, и предоставляют лёгкую альтернативу классам с разными вариантами.

Каждый вызов метода Value добавляет новое уникальное значение в перечисление. Для доступа эти значения обычно определяются как val члены перечисления.

Все значения в перечислении имеют общий уникальный тип, определённый как Value член типа перечисления (Value выбранный по стабильному идентификатору пути экземпляра перечисления).

Значения НЕ ДОЛЖНЫ добавляться в перечисление после его создания; это делает перечисление небезопасным для многопоточного доступа. Если значения добавляются в перечисление из нескольких потоков (несинхронизированным способом) после создания, поведение перечисления не определено.

Параметры значения
initial

Начальное значение, с которого начинать счёт целых чисел, идентифицирующих значения во время выполнения.

Пример
// 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)
Надтипы
интерфейс Serializable
класс Object
интерфейс Matchable
класс Any
Известные подтипы
объект RoundingMode.type
Тип «Я сам»
Enumeration

Классы

Исходный код@SerialVersionUID(0.-(3501153230598116017L))
защищённый класс Val(i: Int, name: String) extends Value with Serializable

Класс, реализующий тип scala.Enumeration.Value. Этот класс можно переопределить, чтобы изменить поведение именования и идентификации целых чисел перечисления.

Исходный код@SerialVersionUID(7091335633555234129L)
абстрактный класс Value extends Ordered[Value] with Serializable

Тип перечисляемых значений.

Исходный код
объект ValueOrdering extends Ordering[Value]

Порядок по id для значений этого набора.

Исходный код@SerialVersionUID(7229671200427364242L)
класс ValueSet extends AbstractSet[Value] with SortedSet[Value] with SortedSetOps[Value, SortedSet, ValueSet] with StrictOptimizedIterableOps[Value, Set, ValueSet] with Serializable

Класс для наборов значений. Итерация по этому набору даст значения в порядке возрастания их id.

Параметры значения
nnIds

Множество id значений (скорректированное таким образом, чтобы наименьшее значение не опускалось ниже нуля), организованное как BitSet.

Компаньон объект

Исходный код@SerialVersionUID(3L)
объект ValueSet extends SpecificIterableFactory[Value, ValueSet]

Объект-фабрика для наборов значений

Компаньон класс

Конструкторы

Исходный код
def this()

Конкретные методы

Исходный код
защищённый конечный метод Value: Value

Создаёт новое значение, которое является частью этого перечисления.

Исходный код
защищённый конечный метод Value(i: Int): Value

Создаёт новое значение, которое является частью этого перечисления, идентифицированное целым числом i.

Параметры значения
i

Целое число, идентифицирующее это значение во время выполнения. Оно должно быть уникальным среди всех значений перечисления.

Возвращает

Новое значение, идентифицированное i.

Исходный код
защищённый конечный метод Value(name: String): Value

Создаёт новое значение, которое является частью этого перечисления, с именем name.

Параметры значения
name

Человекопонятное имя для этого значения.

Возвращает

Новое значение с именем name.

Исходный код
защищённый конечный метод Value(i: Int, name: String): Value

Создаёт новое значение, которое является частью этого перечисления, с именем name и идентификатором i.

Параметры значения
i

Целое число, идентифицирующее это значение во время выполнения. Оно должно быть уникальным среди всех значений перечисления.

name

Человекопонятное имя для этого значения.

Возвращает

Новое значение с указанным идентификатором i и именем name.

Исходный код
конечный метод apply(x: Int): Value

Значение этого перечисления с заданным идентификатором x

Исходный код
конечный метод maxId: Int

Число, на единицу больше наибольшего целого числа, используемого для идентификации значений в этом перечислении.

Исходный код
защищённый метод readResolve(): AnyRef

Исходный код
переопределённый метод toString: String

Имя этого перечисления.

Классы определения Any

Исходный код
метод values: ValueSet

Значения этого перечисления как множество.

Исходный код
конечный метод withName(s: String): Value

Возвращает Value из этого Enumeration, имя которого совпадает с аргументом s. Имена определяются автоматически через рефлексию.

Параметры значения
s

имя Enumeration

Возвращает

значение Value этого Enumeration, если его имя совпадает с s

Исключения
NoSuchElementException

если значение Value с соответствующим именем не содержится в этом Enumeration

Конкретные поля

Source
protected var nextId: Int

Целое число, используемое для идентификации следующего созданного значения.

Source
protected var nextName: Iterator[String]

Строка, используемая для именования следующего созданного значения.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API