为什么val声明不遵循Scala常量命名约定?

时间:2019-07-01 22:28:37

标签: scala coding-style constants naming-conventions

在Scala中,val用于创建常量,Scala常量的命名约定是使用UpperCamelCase约定。 (https://docs.scala-lang.org/style/naming-conventions.html#constants-values-variable-and-methods

对此规则的概括应该是所有val应该在UpperCamelCase中。

即如果使用val关键字声明了变量,则其名称应在UpperCamelCase中。但是,我在Scala网站上看到了利用此规则的示例。

我在这里想念什么?

3 个答案:

答案 0 :(得分:4)

简单地输入:

在程序运行时,常数只有一个值。它要么在编译时固定,例如PiHoursInDay,或者是顶级object中的不可变值。

val是不可变的变量。设置后便无法更改,但是每次调用包含代码的代码时,都可以将其设置为不同的值。

答案 1 :(得分:1)

编码样式建议将final常量大写:

  

如果成员是最终,则是不可变的,并且属于包对象   或对象,可以将其视为常量

例如,请注意如何将scala.math.PI定义为final

@inline final val Pi = java.lang.Math.PI

val在对象内部是最终的,因为它们不能被覆盖,因此即使MyConstant没有明确声明为final,也可以使用以下代码:

object Container {
  val MyConstant = ...
}

如果val不是最终的,则样式建议使用小写字母命名。

答案 2 :(得分:1)

Scala中的

val不仅用于定义常量,而且还用于定义。 因此,如Scala文档在https://docs.scala-lang.org/style/naming-conventions.html#constants-values-variable-and-methods中所述:

要定义常量,您应使用UpperCamelCase样式,在以下情况下我们将这些项目告知常量

如果成员是最终不可变,并且它属于包装对象对象,可以认为是常量。

例如:

object Container {
  val MyConstant = ...
}

方法变量名称应采用lowerCamelCase样式,例如:

val myValue = ...
def myMethod = ...
var myVariable = ...