2013-06-26 14 views
5

Ich habe Scala-Stil EnumArbeiten mit Aufzählungen in Scala

object SomeObject { 

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

Wie kann ich:

1) Ruf valueOf Methode den Wert durch seine String-Darstellung erhalten zu können?

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

2) Aufruf von Java-Analogon von Ordnungs:

val a = SomeObject.SomeEnum.val2 
a.ordinal 

Es gibt keine solche Methoden in SomeEnum, offensichtlich.

Antwort

4
  1. withName():

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

    val ordinal = SomeObject.SomeEnum.val2.id 
    

Siehe auch:

+0

Was an dieser Linie tatsächlich passiert: val Mo, Di, Mi, Do, Fr, Sa, So = Wert? Ich kann sehen, dass "Enumeration.Value" eine abstrakte Klasse ist, also wie funktioniert es? – Felix

+1

"Wert" in dieser Zeile ist kein Typname, es ist eine 'geschützte' Methode, die neue Werte erzeugt. – axtavt

+0

Die Up-Stimmen zu diesen Fragen und Antworten müssen etwas über API-Design und Enumeration sagen. –