我觉得很困惑的一件事是知道我可以在方法和变量名中使用哪些字符和组合.例如
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数学运算符(而不是符号)不算作运算符?
我知道 scala 允许重载它的默认运算符(+、-!等)。是否可以定义自定义运算符并制作类似 |.| 的内容 运算符使得 | -3| 其计算结果为 3。或者定义像 ++++ 这样的运算符,以便 ++++ b 等于 a+3*b?