2012-06-25 19 views
5

¿Cómo declaras constantes de tiempo de compilación en Scala? En C# si se declaraScala: compila las constantes de tiempo

const int myConst = 5 * 5; 

myConst se alinea en que el literal 25. ¿:

final val myConst = 5 * 5 

equivalente o hay algún otro mecanismo/sintaxis?

Respuesta

8

Sí, final val es la sintaxis correcta, con Daniel's caveats. Sin embargo, en el estilo apropiado de Scala, sus constantes deben ser camelCase con una primera letra en mayúscula.

Comenzar con una letra mayúscula es importante si desea usar sus constantes en la coincidencia de patrones. La primera letra es cómo el compilador Scala distingue entre patrones constantes y patrones variables. Ver la Sección 15.2 de Programming in Scala.

Si un objeto val o Singleton no comienza con una letra mayúscula, para utilizarlo como un perfil de compatibilidad debe encerrarlo entre comillas sencillas (``)

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 es la manera de hacerlo. El compilador convertirá esa constante en tiempo de compilación si puede.

Lea el comentario de Daniel a continuación para obtener detalles sobre qué significa "si puede".

+14

Se le olvidó dos puntos importantes: debe ser estáticamente resuelto en tiempo de compilación - No estoy seguro de que Scala haga una aritmética literal en tiempo de compilación - y, muy fácil de equivocar, _no debe tener un tipo_. Si declara 'final val myConst: Int = 5', no se tratará como una constante. –

+1

¿Tiene una referencia con respecto a _no debe tener un tipo_? –

Cuestiones relacionadas