12

Wenn mit Scalas abhängigen Verfahrenstypen zu spielen, stieß ich auf einen Konflikt mit Standard-Methodenparameter:Dependent Methodentypen Konflikt mit Standardargumenten

abstract class X { 
    type Y 
    case class YY(y: Y) 
} 

object XX extends X { 
    type Y = String 
} 

trait SomeTrait { 
    def method(x: X)(y: x.YY, default: Int = 3): Unit 
} 

object SomeObject extends SomeTrait { 
    def method(x: X)(y: x.YY, default: Int): Unit = {} 

    method(XX)(XX.YY("abc")) // fails to compile 
} 

Die Botschaft lautet:

[error] found : me.alexbool.XX.YY 
[error] required: x$1.YY 
[error] Error occurred in an application involving default arguments. 
[error]  method(XX)(XX.YY("abc")) // fails to compile 

Wenn ich das Argument entfernen Mit dem Standardwert aus Methodendefinition und Implementierung wird das Beispiel erfolgreich kompiliert. Was mache ich falsch? Ist es ein Fehler?

P.S. Ich benutze Scala 2.11.4

+0

Sieht aus wie ein Fehler für mich. –

Antwort