(Este es un comentario de adición a la respuesta de Daniel, pero lo estoy publicando como una respuesta para el beneficio del resaltado de sintaxis y el formato).
El punto de Daniel acerca de que el estilo de usar una letra mayúscula inicial es importante en la semántica del lenguaje es más sutil e importante de lo que originalmente le di crédito cuando aprendí Scala.
Considere el siguiente código:
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!")
}
}
}
}
Ingenuamente, hubiera esperado que eso llegara a todos los casos del partido. En su lugar, imprime:
Input 'Some(lower)' results in: lower!
Input 'Some(UPPER)' results in: UPPER!!!
Input 'Some(should mismatch.)' results in: lower!
Lo que sucede es que case Some(lowerConst)
sombrea el valor lowerConst
y crea una variable local con el mismo nombre que se completará cada vez Some
que se evalúe un que contenga una cadena.
Es cierto que hay formas de evitarlo, pero la más simple es seguir la guía de estilo para nombrar constantemente.
Si no puede seguir la convención de nomenclatura, entonces, como @reggoodwin señala en los comentarios a continuación, puede poner el nombre de la variable en ticks, así
case Some(`lowerConst`) => println("lower!")