有没有办法确定给定对象是枚举值?
x.isInstanceOf[Enumeration.$Value]
似乎不起作用,而且根据我对路径依赖类型的理解,不应该。
我想写一个给出任何Enumeration值的函数,返回它的id。或者,将Enumeration转换为Int的隐式也很棒。
答案 0 :(得分:11)
x.isInstanceOf[Enumeration#Value]
适合我。来自specification, Section 3.2.2 "Type Projection"。
答案 1 :(得分: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