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

Why val declaration doesn't follow scala constants naming convention?

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

此规则的概括应该是所有 val 都应采用 UpperCamelCase。

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

我在这里错过了什么?

编码风格建议 final 个常量大写:

if the member is final, immutable and it belongs to a package object or an object, it may be considered a constant

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

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

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

object Container {
  val MyConstant = ...
}

如果val不是final,风格建议小写命名。

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

为了定义 Constants 你应该使用 UpperCamelCase 样式,我们告诉这些项目 Constant when:

如果成员是 finalimmutable 并且属于 package object 或者一个对象,它可以被认为是一个常量。

例如:

object Container {
  val MyConstant = ...
}

虽然方法变量名称应该在lowerCamelCase中风格如:

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

简单地说:

一个常量只有一个值,而程序是运行。它要么在编译时固定,例如PiHoursInDay 或 top-level object.

中的不可变值

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