Question

J'ai deux objets, objet et objetb, tous deux avec une mise à jour de la méthode ().Je veux écrire une fonction qui accepte soit Objecta, soit objetb (mais aucun autre type).Conceptuellement, c'est ce que j'essaie de faire:

def doSomething[T <: ObjectA | T <: ObjectB](obj: T) = {
    obj.update
}

Je me rends compte qu'il existe d'autres moyens de résoudre ce problème (par exemple, typage structurel de la méthode de mise à jour, classe de base commune, etc.), etc.) mais ma question est qu'il est possible de le faire de cette façon à Scala et si ouila syntaxe?Et qu'est-ce qu'on appelle?

Était-ce utile?

La solution

in Scala, il y a le type de manière à faire une union disjointe. Fondamentalement, vous ferez quelque chose comme:

def doSomething(obj: Either[ObjectA, ObjectB]) {
  obj.fold(fa, fb)
}

Checkout http://www.scala-lang.org/api/Current/scala/ELITH.HTML

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top