Quelle est la convention de dénomination des constantes Scala? Une brève recherche sur les suggestions de StackOverflow en majuscules CamelCase (la première ligne ci-dessous), mais je voulais revérifier.
val ThisIsAConstant = 1.23
val THIS_IS_ANOTHER_CONSTANT = 1.55
val thisIsAThirdConstant = 1.94
Quel est le style Scala recommandé?
scala
naming-conventions
constants
grautur
la source
la source
Pi
).Réponses:
Le style officiellement recommandé (et je veux dire officiellement) est le premier style, les cas de chameau avec la première lettre sont en majuscules. C'est clairement défini par Odersky sur la programmation dans Scala.
Le style est également suivi par la bibliothèque standard et a un certain support dans la sémantique du langage: les identificateurs commençant par des majuscules sont traités comme des constantes dans la correspondance de modèles.
(Section 6.10, p. 107 de la deuxième édition)
la source
(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:
Naïvement, je me serais attendu à ce que cela atteigne tous les cas du match. Au lieu de cela, il imprime:
Ce qui se passe, c'est que l'
case Some(lowerConst)
ombre du vallowerConst
et crée une variable locale du même nom qui sera remplie à chaque foisSome
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
la source
val UpperConst = "UPPER_CONST"
accord ou ça devrait êtreval UpperConst = "UpperConst"
la source
UpperConst = "UPPER_CONST"
comme partie java-style ok ou ça devrait êtreval UpperConst = "UpperConst"