Search code examples
scalaenumeration

Unable to create a variable of an Enumeration


I have created an Enumeration as follows:

scala> object J extends Enumeration {
     | type J = Value
     | val Fail, Success = Value
     | }
defined object J

Question 1 - I tried to create a variable of its type but got the following error. Why?

scala> val j:J
<console>:11: error: not found: type J
       val j:J
             ^
<console>:11: error: only classes can have declared but undefined members
       val j:J
           ^

Question 2 - I could create a variable as follows. I suppose the Fail's value is actually 0. How could I print 0?

scala> val j = J.Fail
j: J.Value = Fail

scala> println(j)
Fail

Solution

  • You are using the wrong syntax to assign a type variable, you should do:

    val j = J
    j: J.type = J
    

    Regarding the value, Fail and Sucess has no value apart from its own name, if you want to assign a value to them you should use this syntax:

    object J extends Enumeration {
         type J = Value
         val Fail = Value(0)
         val Success = Value(1)
    }
    

    Then you can access to it ussing its id property

    scala> j.id
    res: Int = 0
    
    scala> j
    res: J.Value = Fail