Scala枚举为int

Pan*_*Lee 14 scala

有没有办法确定给定对象是枚举值?

x.isInstanceOf[Enumeration.$Value] 似乎不起作用,从我对路径依赖类型的理解,不应该.

我想写一个给出任何Enumeration值的函数,返回它的id.或者,将Enumeration转换为Int的隐式也很棒.

hui*_*ker 11

x.isInstanceOf[Enumeration#Value]适合我.从规范,第3.2.2节"类型投影".


Wei*_*Wei 5

类scala.Enumeration.Value具有一个成员字段'id',这是内部整数值。如果未特别指定,则从0开始。

scala> object Weekday extends Enumeration {           
     | val Mon, Tue, Wedn, Thur, Fri, Sat, Sun = Value
     | }
defined module Weekday

scala> Weekday.Mon.id
res5: Int = 0
Run Code Online (Sandbox Code Playgroud)