Accepter plusieurs types pour un paramètre dans Scala
-
09-12-2019 - |
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?
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