(Ceci est un commentaire complémentaire à la réponse de Daniel, mais je le publie comme une réponse au profit de la mise en évidence de la syntaxe et de la mise en forme.)
L'argument de Daniel sur le fait que le style d'utilisation d'une première lettre majuscule est important dans la sémantique du langage est plus subtil et important que ce que je lui avais attribué à l'origine lorsque j'ai appris Scala.
Considérez le code suivant:
object Case {
val lowerConst = "lower"
val UpperConst = "UPPER"
def main(args: Array[String]) {
for (i <- Seq(lowerConst, UpperConst, "should mismatch.").map(Option.apply)) {
print("Input '%s' results in: ".format(i))
i match {
case Some(UpperConst) => println("UPPER!!!")
case Some(lowerConst) => println("lower!")
case _ => println("mismatch!")
}
}
}
}
Naïvement, je me serais attendu à ce que cela atteigne tous les cas du match. Au lieu de cela, il imprime:
Input 'Some(lower)' results in: lower!
Input 'Some(UPPER)' results in: UPPER!!!
Input 'Some(should mismatch.)' results in: lower!
Ce qui se passe, c'est que l' case Some(lowerConst)
ombre du val lowerConst
et crée une variable locale du même nom qui sera remplie à chaque fois Some
qu'une chaîne contenant une chaîne est évaluée.
Il existe certes des moyens de contourner ce problème, mais le plus simple est de suivre le guide de style pour une dénomination constante.
Si vous ne pouvez pas suivre la convention de dénomination, alors comme @reggoodwin le souligne dans les commentaires ci-dessous, vous pouvez mettre le nom de la variable entre des coches, comme ceci
case Some(`lowerConst`) => println("lower!")