(Este é um comentário adendo à resposta de Daniel, mas estou postando-o como uma resposta para o benefício de realce de sintaxe e formatação.)
O argumento de Daniel sobre o estilo de usar uma letra maiúscula inicial sendo importante na semântica da linguagem é mais sutil e importante do que originalmente dei crédito quando aprendi Scala.
Considere o seguinte 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, eu esperava que isso atingisse todas as caixas da partida. Em vez disso, imprime:
Input 'Some(lower)' results in: lower!
Input 'Some(UPPER)' results in: UPPER!!!
Input 'Some(should mismatch.)' results in: lower!
O que está acontecendo é que case Some(lowerConst)
sombreia o val lowerConst
e cria uma variável local de mesmo nome que será populada sempre que um Some
contendo uma string for avaliado.
Certamente, existem maneiras de contornar isso, mas a mais simples é seguir o guia de estilo para nomenclatura constante.
Se você não pode seguir a convenção de nomenclatura, então como @reggoodwin aponta nos comentários abaixo, você pode colocar o nome da variável em ticks, assim
case Some(`lowerConst`) => println("lower!")