2013-06-26 24 views
5

で列挙型を使用した作業私はScalaのスタイルの列挙型を持っている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

この行の 'Value'は型名ではありません。新しい値を作成する' protected'メソッドです。 – axtavt

+0

このQ&Aには、APIデザインとEnumerationについて深く言わなければなりません。 –