Voglio creare una classe covariante che è mutabile, quindi ho bisogno di aggiungere un tipo più basso legato al metodo setter. Ma voglio anche che il metodo setter per impostare un campo, quindi immagino che il campo debba avere lo stesso tipo associato?Tipo inferiore associato al campo Scala nella classe mutevole, covariante?
class Thing[+F](initialValue: F) {
private[this] var secondValue: Option[G >: F] = None
def setSecondValue[G >: F](v: G) = {
this.secondValue = Some(v)
}
}
Il metodo si compila bene. Ma il campo chiamato secondValue non viene compilato affatto, con il messaggio di errore:
Multiple markers at this line
- ']' expected but '>:' found.
- not found: type G
Cosa devo fare?
Perfetto - fa quello che voglio. Ho provato a usare forSome sul metodo e funziona anche: def setSecondAroma (secondAroma: G forSome {tipo G>: F}) = ... –
@JohnSmith Non so se l'uso di forSome G in setSecondValue ha qualche (dis) vantaggi rispetto ad avere un argomento di tipo regolare G. Se lo sapessi/lo scoprirai, per favore postalo qui. –
Nota che il tipo 'G' nel campo non ha nulla a che fare con il tipo' G' nel metodo qui. –