2013-06-26 90 views
5

工作,我有斯卡拉式枚舉用枚舉在Scala中

object SomeObject { 

    final object SomeEnum extends Enumeration { 
    type SomeEnum = Value 
    val val1, val2, val3 = Value 
    } 

我如何:

1)調用valueOf方法能夠得到它的字符串表示的價值?

val possibleVal3 = SomeObject.SomeEnum.valueOf("val3") 

2)的順序調用Java的模擬:

val a = SomeObject.SomeEnum.val2 
a.ordinal 

有在SomeEnum沒有這樣的方法,效果顯着。

回答

4
  1. withName()

    val possibleVal3 = SomeObject.SomeEnum.withName("val3") 
    
  2. id

    val ordinal = SomeObject.SomeEnum.val2.id 
    

參見:

+0

實際上發生在這條線是什麼:VAL週一,週二,週三,週四,週五,週六,週日=價值?我可以看到「Enumeration.Value」是一個抽象類,它是如何工作的? – Felix

+1

此行中的「值」不是類型名稱,它是創建新值的「protected」方法。 – axtavt

+0

這個Q&A的最高票數必須說一些關於API設計和枚舉的內容。 –