我觉得很困惑的一件事是知道我可以在方法和变量名中使用哪些字符和组合.例如
val #^ = 1 // legal
val # = 1 // illegal
val + = 1 // legal
val &+ = 1 // legal
val &2 = 1 // illegal
val £2 = 1 // legal
val ¬ = 1 // legal
Run Code Online (Sandbox Code Playgroud)
据我了解,字母数字标识符和运算符标识符之间存在区别.除非用下划线(混合标识符)分隔,否则您可以将一个匹配或另一个匹配但不能同时混合.
从Scala中的编程 6.10节,
运算符标识符由一个或多个运算符字符组成.运算符字符是可打印的ASCII字符,例如+,:,?,〜或#.
更确切地说,运算符字符属于Unicode数学符号集(Sm)或其他符号(So),或者不是字母,数字,括号,方括号,花括号,单个或双精度的7位ASCII字符引号,或下划线,句号,分号,逗号或后退字符.
所以我们被排除在使用()[]{}'"_.;,
和`之外
我抬起头,统一的数学符号的维基百科,但我发现没有包括的那些+
,:
,?
等是否有一个明确的清单某处的运营商角色是什么?
此外,任何想法为什么Unicode数学运算符(而不是符号)不算作运算符?
初学者斯卡拉问题,但我在这里找不到答案.
与C++中的重载类似,我希望编译器可以区分一个名为-
一个参数的方法(与类相同的类型)和一个-
不带参数的一元版本,为什么unary_
需要呢?
为什么编程语言的变量名中不允许使用特殊字符(下划线除外)?是否有任何与计算机体系结构或组织相关的原因。