如何使用“访问对象”;“创造性”;scala中的名字?

如何使用“访问对象”;“创造性”;scala中的名字?,scala,Scala,例如,给定 object ~ { def foo = ??? } 如何访问该方法 这两种方法都不起作用: ~.foo `~`.foo 编译器抱怨“简单表达式的非法启动” 是的,我知道我可能不应该给类命名“~”,但是标准库和其他一些库都有,有时你需要使用它们 补充:看着我试过的 这确实有效。不确定这是有意的,还是仅仅是关于如何将这些名称转换为JVM标识符的实现细节。这是否适用于scala的其他版本(例如scala.js) 我将把这个问题留一段时间,看看是否有人会给出更广泛的答案。这

例如,给定

object ~ {
   def foo = ???
}
如何访问该方法

这两种方法都不起作用:

~.foo  

`~`.foo
编译器抱怨“简单表达式的非法启动”

是的,我知道我可能不应该给类命名“~”,但是标准库和其他一些库都有,有时你需要使用它们

补充:看着我试过的

这确实有效。不确定这是有意的,还是仅仅是关于如何将这些名称转换为JVM标识符的实现细节。这是否适用于scala的其他版本(例如scala.js)


我将把这个问题留一段时间,看看是否有人会给出更广泛的答案。

这个问题似乎只存在于2.11中:

Welcome to Scala 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_102).
Type in expressions for evaluation. Or try :help.
scala> object ~ { def foo = 0 }
defined object $tilde

scala> ~.foo
<console>:1: error: illegal start of simple expression
~.foo
 ^

有趣。我确实在尝试2.11.8。“这是否适用于其他版本的scala(例如scala.js)?”呃,请给我一点信任:-p当然适用于其他版本的scala。语言规范是否保证了这一点?
Welcome to Scala 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_102).
Type in expressions for evaluation. Or try :help.
scala> object ~ { def foo = 0 }
defined object $tilde

scala> ~.foo
<console>:1: error: illegal start of simple expression
~.foo
 ^
Welcome to Scala 2.12.0 (OpenJDK 64-Bit Server VM, Java 1.8.0_102).
Type in expressions for evaluation. Or try :help.
> object ~ { def foo = 0 }
defined object $tilde
> ~.foo
res0: Int = 0