Packages

  • package root
    Definition Classes
    root
  • package io
    Definition Classes
    root
  • package github
    Definition Classes
    io
  • package memo33
    Definition Classes
    github
  • package scalaenum
    Definition Classes
    memo33
  • abstract class Enum extends Serializable

    Defines a finite set of values specific to the enumeration.

    Defines a finite set of values specific to the enumeration. Typically these values enumerate all possible forms something can take and provide a lightweight alternative to case classes.

    Each call to a Value method adds a new unique value to the enumeration. To be accessible, these values are usually defined as val members of the enumeration.

    All values in an enumeration share a common, unique type defined as the abstract Value type member of the enumeration (Value selected on the stable identifier path of the enumeration instance). Besides, in contrast to Scala's built-in Enumeration, the Value type member can be extended in subclasses, such that it is possible to mix-in traits, for example. In this case, make sure to make the constructor of Value private. Example:

    // adding methods to Value
    class Day private extends Day.Val {
      def isWorkingDay: Boolean = this != Day.Saturday && this != Day.Sunday
    }
    object Day extends Enum {
      type Value = Day
      val Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday = new Day
    }
    
    // usage:
    Day.values filter (_.isWorkingDay) foreach println
    // output:
    // Monday
    // Tuesday
    // Wednesday
    // Thursday
    // Friday
    Definition Classes
    scalaenum
    Annotations
    @SerialVersionUID()
    Example:
    1. // 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)
  • Val
  • Value
  • ValueOrdering
  • ValueSet

implicit object ValueOrdering extends Ordering[Value]

An ordering by id for values of this set

Linear Supertypes
Ordering[Value], PartialOrdering[Value], Equiv[Value], Serializable, Comparator[Value], AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ValueOrdering
  2. Ordering
  3. PartialOrdering
  4. Equiv
  5. Serializable
  6. Comparator
  7. AnyRef
  8. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. class OrderingOps extends AnyRef
    Definition Classes
    Ordering

Value Members

  1. def compare(x: Value, y: Value): Int
    Definition Classes
    ValueOrdering → Ordering → Comparator
  2. def equiv(x: Value, y: Value): Boolean
    Definition Classes
    Ordering → PartialOrdering → Equiv
  3. def gt(x: Value, y: Value): Boolean
    Definition Classes
    Ordering → PartialOrdering
  4. def gteq(x: Value, y: Value): Boolean
    Definition Classes
    Ordering → PartialOrdering
  5. def isReverseOf(other: Ordering[_]): Boolean
    Definition Classes
    Ordering
  6. def lt(x: Value, y: Value): Boolean
    Definition Classes
    Ordering → PartialOrdering
  7. def lteq(x: Value, y: Value): Boolean
    Definition Classes
    Ordering → PartialOrdering
  8. def max[U <: Value](x: U, y: U): U
    Definition Classes
    Ordering
  9. def min[U <: Value](x: U, y: U): U
    Definition Classes
    Ordering
  10. implicit def mkOrderingOps(lhs: Value): OrderingOps
    Definition Classes
    Ordering
  11. def on[U](f: (U) => Value): Ordering[U]
    Definition Classes
    Ordering
  12. def orElse(other: Ordering[Value]): Ordering[Value]
    Definition Classes
    Ordering
  13. def orElseBy[S](f: (Value) => S)(implicit ord: Ordering[S]): Ordering[Value]
    Definition Classes
    Ordering
  14. def reverse: Ordering[Value]
    Definition Classes
    Ordering → PartialOrdering
  15. def reversed(): Comparator[Value]
    Definition Classes
    Comparator
  16. def thenComparing[U <: Comparable[_ >: U <: AnyRef]](arg0: Function[_ >: Value <: AnyRef, _ <: U]): Comparator[Value]
    Definition Classes
    Comparator
  17. def thenComparing[U <: AnyRef](arg0: Function[_ >: Value <: AnyRef, _ <: U], arg1: Comparator[_ >: U <: AnyRef]): Comparator[Value]
    Definition Classes
    Comparator
  18. def thenComparing(arg0: Comparator[_ >: Value <: AnyRef]): Comparator[Value]
    Definition Classes
    Comparator
  19. def thenComparingDouble(arg0: ToDoubleFunction[_ >: Value <: AnyRef]): Comparator[Value]
    Definition Classes
    Comparator
  20. def thenComparingInt(arg0: ToIntFunction[_ >: Value <: AnyRef]): Comparator[Value]
    Definition Classes
    Comparator
  21. def thenComparingLong(arg0: ToLongFunction[_ >: Value <: AnyRef]): Comparator[Value]
    Definition Classes
    Comparator
  22. def tryCompare(x: Value, y: Value): Some[Int]
    Definition Classes
    Ordering → PartialOrdering