在Scala中命名方法和变量的规则是什么,特别是在使用_
混合符号和字母时?例如,为什么_a_
,a_+
,__a
,__a__a__a__+
,___
是有效名称,但_a_+_a
或_a_+_
是不?
答案 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:
有三种方法可以形成标识符。首先,标识符可以 以一个字母开头,后面跟着一个任意序列 字母和数字。这可能后跟下划线'_'字符 和另一个由字母和数字组成的字符串 操作员角色。其次,标识符可以从操作员开始 字符后跟任意一系列操作符。 前两种形式称为普通标识符。最后,一个 标识符也可以由任意字符串组成 反引号(主机系统可能会对其施加一些限制 字符串对于标识符是合法的)。然后标识符由 除反引号之外的所有字符。
您还可以在链接中看到该语言的语法。