(Dies ist ein Nachtragskommentar zu Daniels Antwort, aber ich poste ihn als Antwort, um die Syntax hervorzuheben und zu formatieren.)
Daniels Argument, dass der Stil der Verwendung eines Anfangsbuchstaben in der Sprachsemantik wichtig ist, ist subtiler und wichtiger, als ich es ursprünglich beim Erlernen von Scala anerkannt hatte.
Betrachten Sie den folgenden Code:
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!")
}
}
}
}
Naiv hätte ich erwartet, dass das alle Fälle im Match erreichen würde. Stattdessen wird gedruckt:
Input 'Some(lower)' results in: lower!
Input 'Some(UPPER)' results in: UPPER!!!
Input 'Some(should mismatch.)' results in: lower!
Was passiert ist, dass die case Some(lowerConst)
Schatten den Wert lowerConst
und eine lokale Variable mit dem gleichen Namen erstellt, die jedes Mal Some
ausgefüllt wird, wenn eine, die eine Zeichenfolge enthält, ausgewertet wird.
Es gibt zwar Möglichkeiten, dies zu umgehen, aber die einfachste besteht darin, den Styleguide für die ständige Benennung zu befolgen.
Wenn Sie der Namenskonvention nicht folgen können, können Sie, wie @reggoodwin in den Kommentaren unten ausführt, den Variablennamen wie folgt in Häkchen setzen
case Some(`lowerConst`) => println("lower!")