2016-04-01 6 views
3

Ich lerne Scala und bin mit einem Fehler bei Generika festgefahren. Ich habe eine Eigenschaft alsIllegale zyklische Referenz mit Klasse

trait myTrait[ 
    A, B, 
    Self[X, Y] <: myTrait[X, Y, Self]] { 
protected def self: Self[A, B] 
} 

und meine Klasse definiert als

class myClass[B] extends myTrait[Int, B, myClass]{ 
    override protected def self:myClass[B] = this 
} 

Das ist mir einen Compiler-Fehler „illegal zyklische Referenz Einbeziehung Klasse myClass“ gibt. Der Fehler verschwindet, wenn ich myClass als

deklariere Was mache ich falsch?

Antwort

0

Das ist nicht der Fehler, den ich in 2.11.7 erhalten:

myClass takes one type parameter, expected: two 

was Sinn macht: myClass als Self Argument von MyTrait verwendet, die Parameter zwei Typen erfordert.