问题 Scala枚举为int


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

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

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


9269
2017-07-09 05:01


起源



答案:


x.isInstanceOf[Enumeration#Value] 适合我。来自 规范,第3.2.2节“类型投影”


10
2017-07-09 07:22





类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

2
2018-01-30 01:07



你应该解释你的代码 - 它被列为“低质量帖子”。 - davidkonrad
你怎么指定它? - Ruslan


答案:


x.isInstanceOf[Enumeration#Value] 适合我。来自 规范,第3.2.2节“类型投影”


10
2017-07-09 07:22





类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

2
2018-01-30 01:07



你应该解释你的代码 - 它被列为“低质量帖子”。 - davidkonrad
你怎么指定它? - Ruslan