2013-06-26 12 views
5

ho in stile Scala enumLavorare con le enumerazioni in Scala

object SomeObject { 

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

Come faccio:

1) Chiamare valueOf metodo per essere in grado di ottenere il valore per la sua rappresentazione di stringa?

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

2) analogico del ordinale di chiamata Java:

val a = SomeObject.SomeEnum.val2 
a.ordinal 

Non ci sono tali metodi in SomeEnum, ovviamente.

risposta

4
  1. withName():

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

    val ordinal = SomeObject.SomeEnum.val2.id 
    

Vedi anche:

+0

Cosa succede in realtà in questa linea: val lun, mar, mer, gio, ven, sab, dom = Valore? Posso vedere che "Enumeration.Value" è una classe astratta, quindi come funziona? – Felix

+1

'Valore' in questa riga non è un nome di tipo, è un metodo' protected' che crea nuovi valori. – axtavt

+0

I voti positivi di questa sessione di domande e risposte devono dire qualcosa di approfondito sulla progettazione e l'enumerazione dell'API. –