Scala常量的命名约定?
Scala常量的命名约定是什么? 一个简单的searchStackOverflowbuild议大写CamelCase(下面的第一行),但我想仔细检查。
val ThisIsAConstant = 1.23 val THIS_IS_ANOTHER_CONSTANT = 1.55 val thisIsAThirdConstant = 1.94
哪个是Scala风格的推荐?
正式推荐的风格(我的意思是正式的)是第一种风格,第一个字母的骆驼案是大写的。 这是由Odersky在Scala编程中明确规定的。
样式也跟着标准库,并且在语言语义上有一些支持:以大写开头的标识符在模式匹配中被当作常量。
(第二版第107页第6.10节)
(这是对Daniel的答案的补充评论,但是我将其作为对语法突出显示和格式化好处的回答发表)。
丹尼尔关于使用首字母大写字母在语言语义中的重要性的观点比我最初在学习斯卡拉时给予的功劳更加微妙和重要。
考虑下面的代码:
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!") } } } }
天真地,我本来期望能够达到比赛中的所有情况。 相反,它打印:
Input 'Some(lower)' results in: lower! Input 'Some(UPPER)' results in: UPPER!!! Input 'Some(should mismatch.)' results in: lower!
发生了什么事情是case Some(lowerConst)
阴影val lowerConst
并创build一个同名的局部variables,这个variables在包含一个string的Some
被评估的时候会被填充。
无可否认有办法解决这个问题,但最简单的方法是按照风格指南进行恒定命名。
如果你不能遵循命名约定,那么@reggoodwin在下面的注释中指出,你可以把variables名放在tick中,像这样
case Some(`lowerConst`) => println("lower!")
常数名称应该在上骆驼的情况下。 也就是说,如果成员是最终的,不可变的, 它属于一个包对象或对象 ,它可以被认为是一个常量….方法,值和variables名称应该是在较低的骆驼情况下
http://docs.scala-lang.org/style/naming-conventions.html#constants-values-variable-and-methods