Почему компиляция Scala не допускает перегрузки метода области видимости? - PullRequest
0 голосов
/ 02 ноября 2018

Я заметил, что компилятор scala не разрешает перегрузку метода области видимости. Версия Scala 2.11.12

Не компилируется:

val result = {
  def loop(a: String): String = ???

  def loop(i: Int): Int = ???

  ???
}

Компилировать правильно:

def loop(a: String): String = ???

def loop(i: Int): Int = ???

val result = ???

Вопрос:

  • Почему это так?
  • В чем разница между методом в области видимости и вне области видимости?

1 Ответ

0 голосов
/ 02 ноября 2018

Перегрузка происходит, когда вы вызываете метод для объекта , это не происходит с вызовами голых функций. Таким образом, вы можете определить только перегруженные методы для класса. Блок не является классом, поэтому у него не может быть перегруженных методов.

Ваш код «правильно скомпилировать» будет работать только в том случае, если он размещен непосредственно внутри класса / объекта.

...