为什么编译失败:
scala> val a? = true
<console>:1: error: illegal start of simple pattern
val a? = true
^
这有效吗?
scala> val a_? = true
a_?: Boolean = true
根据Scala语言规范(看看2.8,怀疑自那以后事情发生了很大变化):
idrest ::= {字母|数字} [`_'操作]
也就是说,标识符可以以字母或数字开头,后跟下划线字符以及其他运算符字符。这使得标识符如foo_!@!
有效的标识符。另请注意,标识符还可能仅包含一串运算符字符。考虑以下 REPL 会话:
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) Client VM, Java 1.6.0_16).
scala> val +aff = true
<console>:1: error: illegal start of simple pattern
val +aff = true
^
scala> val ??? = true
???: Boolean = true
scala> val foo_!@! = true
foo_!@!: Boolean = true
scala> val %^@%@ = true
%^@%@: Boolean = true
scala> val ^&*!%@ = 42
^&*!%@: Int = 42
希望这能回答您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)