Dati due tratti indipendenti:Composizione tratti indipendenti
trait T1 {
def x = 42
}
trait T2 {
def x = 0
}
Se provo a definire una miscelazione di classe in questi due tratti come:
class C extends T1 with T2
ottengo un errore di compilazione:
error: overriding method x in trait T1 of type => Int;
method x in trait T2 of type => Int needs `override' modifier
class C extends T1 with T2
^
one error found
Supponiamo ora che T1 e T2 siano stati sviluppati in modo indipendente, quindi non eseguire l'override in quanto non sovrascrivono nulla. Come può essere definito C allora? Come questo:
class C extends T1 with T2 {
override def x = super.x
}
?
Questo è interessante. Se le due definizioni di 'x' in' T1' e 'T2' hanno tipi diversi, sembra essere un problema inevitabile. Esiste un modo intelligente in Scala per correggere questi conflitti di nomi se i tipi non corrispondono? – Mike
Usa il mio primo esempio e poi definisci 'C' come segue:' la classe C estende T1 con T2 {override def x = super [T1] .x} '. Naturalmente, puoi anche chiamare 'super [T2] .x'. –