Ich möchte eine kovariante Klasse erstellen, die veränderbar ist, also muss ich einen niedrigeren Typ hinzufügen, der an die Setter-Methode gebunden ist. Aber ich möchte auch die Setter-Methode, um ein Feld zu setzen, also denke ich, das Feld muss den gleichen Typ gebunden haben?Unterer Typ gebunden an Scala-Feld in veränderbarer, kovarianter Klasse?
class Thing[+F](initialValue: F) {
private[this] var secondValue: Option[G >: F] = None
def setSecondValue[G >: F](v: G) = {
this.secondValue = Some(v)
}
}
Die Methode kompiliert fein. Aber das Feld secondValue kompiliert überhaupt nicht mit der Fehlermeldung:
Multiple markers at this line
- ']' expected but '>:' found.
- not found: type G
Was muss ich tun?
Perfect - das tut, was ich will. Ich habe versucht mit forSome auf der Methode und das funktioniert auch: def setSecondAroma (secondAroma: G forSome {Typ G>: F}) = ... –
@JohnSmith Ich weiß nicht, wenn forSome G in setSecondValue hat eine (dis) Vorteile im Vergleich zu nur mit einem regulären Argument Typ G. Sollten Sie wissen/finden Sie heraus, bitte hier posten. –
Beachten Sie, dass der Typ 'G' in dem Feld hier nichts mit dem Typ' G' zu tun hat. –