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?

È stato utile?

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
scroll top