带下划线的 Scala 变量命名规则



Scala 中命名方法和变量的规则是什么,尤其是在使用 _ 混合符号和字母时?例如,为什么_a_a_+__a__a__a__a__+___是有效名称,而_a_+_a_a_+_不是?

它在 Scala 语言规范的第一部分:

有三种方法可以形成标识符。首先,标识符可以以字母开头,字母后跟任意字母和数字序列。后面可以跟下划线"_"字符和另一个由字母和数字或运算符字符组成的字符串。

从这一点上并不完全清楚,但运算符字符后面不能跟着其他任何东西。如下所示(标识符末尾的模式):

idrest   ::=  {letter | digit} [‘_’ op]

_a_+_a_a_+_ 是非法的,因为它们在运算符字符后面有另一个字母或下划线。但是,如果您用反引号包围它们,它们是合法的。

scala> val `_a_+_` = 1
_a_+_: Int = 1
scala> val `_a_+_a` = 1
_a_+_a: Int = 1

从这里:

有三种方法可以形成标识符。首先,标识符可以 以字母开头,字母后可以跟任意序列 字母和数字。后面可能跟着下划线"_"字符 和另一个由字母和数字组成的字符串,或 运算符字符。其次,标识符可以从运算符开始 字符,后跟任意运算符字符序列。 前两种形式称为普通标识符。最后,一个 标识符也可以由任意字符串在 反引号(主机系统可能会对其施加一些限制 字符串对于标识符是合法的)。然后,标识符由 除反引号本身以外的所有字符。

您还可以在链接中看到该语言的语法。

最新更新