Ich möchte definiert die Art teilen SometimesUsedWithBaseWenn „sharing“ Generika für Züge mit Klasse in class Base kontra Fehler für die Parameter dieses Typs
trait Base[A] {
type BaseType = A
}
trait SometimesUsedWithBase {
this: Base[_] =>
def someFunction(in: BaseType): BaseType
}
class StringThing extends Base[String] with SometimesUsedWithBase {
def someFunction(in: String): String = "" + in
}
Diese Lösung funktioniert gut, bis ich den Parameter zu somefunction von zugesetztem Geben Sie Basistyp ein. (Wenn Sie also den Parameter entfernen, funktioniert der Code einwandfrei). Jetzt bekomme ich diesen Fehler:
Error:(7, 21) covariant type _$1 occurs in contravariant position in type SometimesUsedWithBase.this.BaseType of value in def someFunction(in: BaseType): BaseType ^
Irgendwelche Ideen, wie ich erreichen kann, was ich suche zu tun?
add type-Parameter auf 'SometimesUsedWithBase [X]' und verwenden Sie es in 'somefunction ' – Rumoku
@rumoku Wenn ich das getan hätte, wäre ich gezwungen, SometimesUsedWithBase mit dem Typ in StringThing zu definieren, richtig? Ich wollte das vermeiden und stattdessen das in Base definierte generische verwenden – MintyAnt