Beachten Sie, dass Sie das gleiche Ergebnis erzielen können, indem Sie ein Objekt erstellen:
def etwas() {
object A {
def a(s:String) {}
def a(i: Int) {}
}
import A._
a("asd")
a(2)
}
In Ihrem Beispiel definieren Sie lokale Funktionen. In meinem Beispiel deklariere ich Methoden. Statische Überladung ist für Objekte, Klassen und Traits erlaubt.
Ich weiß nicht, warum es für lokale Funktionen nicht erlaubt ist, aber ich vermute, dass Überladung eine mögliche Fehlerquelle ist und wahrscheinlich nicht sehr nützlich innerhalb eines Codeblocks ist (wo Sie wahrscheinlich verschiedene Namen in diesem Blockbereich verwenden können). Ich gehe davon aus, dass es in Klassen erlaubt ist, weil es in Java erlaubt ist.