2017-07-06 3 views
1

Warum scala REPL nicht zulassen, mehrere Funktionen mit dem gleichen Namen in einer anderen Funktion zu haben?Methode ist zweimal definiert

def wrapper(): Unit = { 
    def a: Unit = ??? 
    def a(i: Int): Unit = ??? 
    } 

error: method a is defined twice

conflicting symbols both originated in file '< console>'

+0

Es ist eine etwas willkürliche (aber gemeinsame) Entscheidung. Es stellt sich heraus, dass das Debuggen schwierig wird, wenn Sie dies tun (und es ist schwer vorstellbar, warum Sie es wollen). – Alec

+0

Meine Funktion ist ungefähr so ​​getBirthDates (userData: UserData) { isValid (Monat: String) = Monat.Matches (Regexp) && IsValid (Monat.toInt) isValid (Monat: Int) = Monat> 0 && Monat <= 12 ... } Und jetzt habe ich sie als private Methoden des Objekts verschoben. Aber eigentlich habe ich auf Scala für 2 Jahre codiert und nie zuvor dieses Problem gefunden, so ist es eine seltene Situation. – Ivan

+0

Tritt dies nur in der REPL oder auch bei der Quellcode-Erstellung wie gewohnt auf? – stefanobaghino

Antwort

2

Sieht aus wie Sie verwenden möchten (OOP-Funktion) in einer Methode zu überlasten, was nicht richtig OOP für die primitiven und es ist sieht nicht resonable von OOP Sicht (und ich stimme mit Compiler) . Um dies mit OOP-Funktionen auszurichten, wickle es einfach in ein Objekt:

+1

Gute Idee, auch ich kann Import wr._ hinzufügen und benutze nur ein (10) – Ivan

Verwandte Themen