Accetta più tipi per un parametro in Scala
-
09-12-2019 - |
Domanda
Ho due oggetti, ObjectA e ObjectB, entrambi con un aggiornamento del metodo ().Voglio scrivere una funzione che accetta oggetto o oggettob (ma nessun altro tipo).Concettualmente, questo è ciò che sto cercando di fare:
def doSomething[T <: ObjectA | T <: ObjectB](obj: T) = {
obj.update
}
.
Mi rendo conto che ci sono altri modi per risolvere questo problema (ad esempio, digitatura strutturale del metodo di aggiornamento (), classe base comune, ecc.) Ma la mia domanda è è possibile farlo in questo modo a Scala e in caso affermativoLa sintassi?E cosa è chiamato?
Soluzione
A Scala, c'è il tipo per creare un'unione disgiunta. Fondamentalmente, farai qualcosa come:
def doSomething(obj: Either[ObjectA, ObjectB]) {
obj.fold(fa, fb)
}
.
Checkout http://www.scala-lang.org/api/Current/scala/ether.html
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow