有一件事让我很困惑,那就是知道我可以在方法名和变量名中使用哪些字符和组合。例如
val #^ = 1 // legal
val # = 1 // illegal
val + = 1 // legal
val &+ = 1 // legal
val &2 = 1 // illegal
val £2 = 1 // legal
val ¬ = 1 // legal
据我所知,字母数字标识符和运算符标识符是有区别的。除了用下划线(混合标识符)分隔,您可以混合一个或另一个匹配,但不能两者混合。
来自Scala第6.10节的编程,
运算符标识符由一个或多个运算符字符组成。运算符字符是可打印的ASCII字符,例如+、:、?、~或#。 更准确地说,运算符字符属于Unicode一组数学符号(Sm)或其他符号(So),或7位ASCII字符,这些字符不是字母、数字、括号、方括号、大括号、单引号或双引号,也不是下划线、句号、分号、逗号或后勾字符。
因此,我们被禁止使用()[]{}'"_.;,
和
我在维基百科上查找了Unicode的数学符号,但我发现的数字符号不包括+
、:
、?
等。
还有,为什么Unicode数学运算符(而不是符号)不算运算符?
发布于 2011-10-05 06:32:00
语言规范。给出了第1章词法语法中的规则(在第3页):
这与您在Scala编程中提取的编程内容基本相同。+
不是Unicode的数学符号,但它肯定是上面没有列出的一个ASCII可打印字符 (不是一个字母,包括_或$,一个数字,一个偏执,一个分隔符)。
在你的名单中:
$
也不是一个(它被认为是一个字母)。发布于 2021-09-19 10:20:06
使用回拨以转义限制并使用Unicode符号。
val `r→f` = 150
println(`r→f`)
https://stackoverflow.com/questions/7656937
复制相似问题