Обратите внимание, что вы можете достичь того же результата, создав объект:
def something() {
object A {
def a(s:String) {}
def a(i: Int) {}
}
import A._
a("asd")
a(2)
}
В вашем примере вы определяете локальные функции . В моем примере я объявляю методов . Статическая перегрузка допускается для объектов, классов и признаков.
Я не знаю, почему это не разрешено для локальных функций, но я предполагаю, что перегрузка является возможным источником ошибки и, вероятно, не очень полезна внутри блока кода (где, вероятно, вы можете использовать разные имена для этой области блока ). Я предполагаю, что это разрешено в классах, потому что это разрешено в Java.