2012-06-25 22 views
5

Come si dichiarano le costanti di tempo di compilazione in Scala? In C# se si dichiaraScala: costante di tempo di compilazione

const int myConst = 5 * 5; 

myConst è foderato in-come letterale 25. è:

final val myConst = 5 * 5 

equivalente o c'è qualche altro meccanismo/sintassi?

risposta

8

Sì, final val è la sintassi corretta, con Daniel's caveats. Tuttavia, nel giusto stile di Scala le tue costanti dovrebbero essere CamelCase con una prima lettera maiuscola.

L'inizio con una lettera maiuscola è importante se si desidera utilizzare le costanti nella corrispondenza del modello. La prima lettera è come il compilatore Scala distingue tra pattern costanti e pattern variabili. Vedere la Sezione 15.2 di Programming in Scala.

Se un oggetto val o Singleton non inizia con una lettera maiuscola, per usarlo come un modello di corrispondenza è necessario racchiuderlo in apici inversi (``)

x match { 
    case Something => // tries to match against a value named Something 
    case `other` => // tries to match against a value named other 
    case other =>  // binds match value to a variable named other 
} 
5

final val è il modo per farlo. Il compilatore eseguirà quindi una costante in fase di compilazione, se possibile.

Leggi il commento di Daniel qui sotto per i dettagli su cosa significa "se può".

+14

Avete dimenticato due punti importanti: deve essere staticamente risolto al momento della compilazione - Non sono sicuro che Scala esegua l'aritmetica letterale in fase di compilazione e, molto facilmente, non deve avere un tipo_. Se lo dichiari 'final val myConst: Int = 5', non sarà considerato come una costante. –

+1

Hai un riferimento per _it non deve avere un tipo_? –

Problemi correlati