Enum

enumeratum.Enum
See theEnum companion object
trait Enum[A <: EnumEntry]

All the cool kids have their own Enumeration implementation, most of which try to do so in the name of implementing exhaustive pattern matching.

This is yet another one.

Example:

scala> import enumeratum._

scala> sealed trait DummyEnum extends EnumEntry

scala> object DummyEnum extends Enum[DummyEnum] {
   |   val values = findValues
   |   case object Hello   extends DummyEnum
   |   case object GoodBye extends DummyEnum
   |   case object Hi      extends DummyEnum
   | }

scala> DummyEnum.withNameOption("Hello")
res0: Option[DummyEnum] = Some(Hello)

scala> DummyEnum.withNameOption("Nope")
res1: Option[DummyEnum] = None

Type parameters

A

The sealed trait

Attributes

Companion
object
Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Value members

Concrete methods

def extraNamesToValuesMap: Map[String, A]

Additional list of names which can be mapped to values, for example to allow mapping of legacy values.

Additional list of names which can be mapped to values, for example to allow mapping of legacy values.

Attributes

Returns

a Map of names to Values

def indexOf(member: A): Int

Returns the index number of the member passed in the values picked up by this enum

Returns the index number of the member passed in the values picked up by this enum

Value parameters

member

the member you want to check the index of

Attributes

Returns

the index of the first element of values that is equal (as determined by ==) to member, or -1, if none exists.

def withName(name: String): A

Tries to get an A by the supplied name. The name corresponds to the .name of the case objects implementing A

Tries to get an A by the supplied name. The name corresponds to the .name of the case objects implementing A

Like Enumeration 's withName, this method will throw if the name does not match any of the values' .entryName values.

Attributes

def withNameEither(name: String): Either[NoSuchMember[A], A]

Returns an [[Right[A]] ] for a given name, or a [[Left[NoSuchMember]] ] if the name does not match any of the values' .entryName values.

Returns an [[Right[A]] ] for a given name, or a [[Left[NoSuchMember]] ] if the name does not match any of the values' .entryName values.

Attributes

def withNameInsensitive(name: String): A

Tries to get an A by the supplied name. The name corresponds to the .name of the case objects implementing A, disregarding case

Tries to get an A by the supplied name. The name corresponds to the .name of the case objects implementing A, disregarding case

Like Enumeration 's withName, this method will throw if the name does not match any of the values' .entryName values.

Attributes

def withNameInsensitiveEither(name: String): Either[NoSuchMember[A], A]

Returns an [[Right[A]] ] for a given name, or a [[Left[NoSuchMember]] ] if the name does not match any of the values' .entryName values, disregarding case.

Returns an [[Right[A]] ] for a given name, or a [[Left[NoSuchMember]] ] if the name does not match any of the values' .entryName values, disregarding case.

Attributes

def withNameInsensitiveOption(name: String): Option[A]

Optionally returns an A for a given name, disregarding case

Optionally returns an A for a given name, disregarding case

Attributes

def withNameLowercaseOnly(name: String): A

Tries to get an A by the supplied name. The name corresponds to the .name of the case objects implementing A transformed to lower case

Tries to get an A by the supplied name. The name corresponds to the .name of the case objects implementing A transformed to lower case

Like Enumeration 's withName, this method will throw if the name does not match any of the values' .entryName values.

Attributes

def withNameLowercaseOnlyEither(name: String): Either[NoSuchMember[A], A]

Returns an [[Right[A]] ] for a given name, or a [[Left[NoSuchMember]] ] if the name does not match any of the values' .entryName values, disregarding case.

Returns an [[Right[A]] ] for a given name, or a [[Left[NoSuchMember]] ] if the name does not match any of the values' .entryName values, disregarding case.

Attributes

def withNameLowercaseOnlyOption(name: String): Option[A]

Optionally returns an A for a given name assuming the value is lower case

Optionally returns an A for a given name assuming the value is lower case

Attributes

def withNameOption(name: String): Option[A]

Optionally returns an A for a given name.

Optionally returns an A for a given name.

Attributes

def withNameUppercaseOnly(name: String): A

Tries to get an A by the supplied name. The name corresponds to the .name of the case objects implementing A transformed to upper case

Tries to get an A by the supplied name. The name corresponds to the .name of the case objects implementing A transformed to upper case

Like Enumeration 's withName, this method will throw if the name does not match any of the values' .entryName values.

Attributes

def withNameUppercaseOnlyEither(name: String): Either[NoSuchMember[A], A]

Returns an [[Right[A]] ] for a given name, or a [[Left[NoSuchMember]] ] if the name does not match any of the values' .entryName values, disregarding case.

Returns an [[Right[A]] ] for a given name, or a [[Left[NoSuchMember]] ] if the name does not match any of the values' .entryName values, disregarding case.

Attributes

def withNameUppercaseOnlyOption(name: String): Option[A]

Optionally returns an A for a given name assuming the value is upper case

Optionally returns an A for a given name assuming the value is upper case

Attributes

Inherited methods

inline def findValues: IndexedSeq[A]

Returns a Seq of A objects that the macro was able to find.

Returns a Seq of A objects that the macro was able to find.

You will want to use this in some way to implement your values method. In fact, if you aren't using this method... why are you even bothering with this lib?

Attributes

Inherited from:
EnumCompat (hidden)
def values: IndexedSeq[A]

The sequence of values for your Enum. You will typically want to implement this in your extending class as a val so that withName and friends are as efficient as possible.

The sequence of values for your Enum. You will typically want to implement this in your extending class as a val so that withName and friends are as efficient as possible.

Feel free to implement this however you'd like (including messing around with ordering, etc) if that fits your needs better.

Attributes

Inherited from:
EnumCompat (hidden)

Concrete fields

final lazy val lowerCaseNamesToValuesMap: Map[String, A]

Map of A object names in lower case to A s for case-insensitive comparison

Map of A object names in lower case to A s for case-insensitive comparison

Attributes

lazy val namesToValuesMap: Map[String, A]

Map of A object names to A s

Map of A object names to A s

Attributes

final lazy val upperCaseNameValuesToMap: Map[String, A]

Map of A object names in upper case to A s for case-insensitive comparison

Map of A object names in upper case to A s for case-insensitive comparison

Attributes

final lazy val valuesToIndex: Map[A, Int]

Map of A to their index in the values sequence.

Map of A to their index in the values sequence.

A performance optimisation so that indexOf can be found in constant time.

Attributes