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

时间:2015-04-15 18:23:36

标签: scala

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

2 个答案:

答案 0 :(得分:4)

它位于very first section of the Scala Language Specification

  

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

由此不完全清楚,但操作员角色不能被其他任何东西所遵循。在这里看到(标识符结尾的模式):

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

_a_+_a_a_+_是非法的,因为他们在操作员字符后面有另一个字母或下划线。但是,如果用背引号括起来, 是合法的。

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

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

答案 1 :(得分:2)

来自here

  

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

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