Ja, final val
ist die richtige Syntax mit Daniel's caveats. Im richtigen Scala-Stil sollten Ihre Konstanten jedoch camelCase mit einem Großbuchstaben sein.
Beginnen Sie mit einem Großbuchstaben, wenn Sie Ihre Konstanten im Mustervergleich verwenden möchten. Der erste Buchstabe unterscheidet den Scala-Compiler zwischen konstanten Mustern und variablen Mustern. Siehe Abschnitt 15.2 von Programming in Scala.
Wenn ein val
oder Singleton-Objekt nicht mit einem Großbuchstaben beginnen, es als Übereinstimmungsmuster verwenden Sie es in Backticks einschließen muss (``
)
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
}
Sie zwei wichtige Punkte vergessen haben: Es muss statisch sein zur Kompilierzeit aufgelöst - ich bin nicht sicher, ob Scala während der Kompilierzeit eine Literalarithmetik ausführt - und sehr leicht, sich zu verirren, _kann keinen Typ_ haben. Wenn Sie es als 'final val myConst: Int = 5' deklarieren, wird es nicht als Konstante behandelt. –
Haben Sie eine Referenz in Bezug auf _Es darf keinen Typ_ haben? –