Я могу определить метод оператора взрыва, но я не могу вызвать его в Scala. Зачем?
Сначала я определяю !
метод:
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.!()
^
1 ответ
!foo
интерпретируется как
foo.unary_!
Если вы хотите вызвать свой метод, вы должны указать явный получатель, например
this.!()
или же
this !()
или же
this ! ()