首先我定义!
方法:
scala> def !() = "hi"
$bang: ()java.lang.String
现在我可以这样称呼它:
scala> $bang()
res3: java.lang.String = hi
但这不起作用:
scala> !()
<console>:8: error: value unary_! is not a member of Unit
!()
即使这不起作用:
scala> `!`()
<console>:8: error: value unary_! is not a member of Unit
`!`()
^
我在这里做错了什么?当我无法调用时,为什么我可以定义!()
?
EDIT1
添加对象引用会出错:
scala> this.!()
<console>:8: error: value ! is not a member of object $iw
this.!()
^
答案 0 :(得分:1)
!foo
被解释为
foo.unary_!
如果要调用方法,则必须指定显式接收器,例如
this.!()
或
this !()
或
this ! ()