Tengo dos objetos, ObjectA y ObjectB, ambos con un método update(). Quiero escribir una función que acepte ObjectA o ObjectB (pero no otros tipos). Conceptualmente, esto es lo que estoy tratando de hacer:aceptar múltiples tipos para un parámetro en scala
def doSomething[T <: ObjectA | T <: ObjectB](obj: T) = {
obj.update
}
Sé que existen otras maneras de resolver este problema (por ejemplo, la tipificación estructural del método de actualización(), clase base común, etc.) pero mi pregunta es es posible hacerlo de esta manera en Scala y, de ser así, ¿cuál es la sintaxis? Y como se llama esto?
¿Cómo se puede esperar que esto funcione? ¿Cómo sabría el compilador qué métodos tenía 'T' si no supiera de qué tipo era? Si quiere asegurarse de que su clase tenga una 'actualización', entonces para eso están los tipos estructurales. – dhg
posible duplicado de [¿Scala tiene "disyunción tipo" (tipos de unión)?] (Http://stackoverflow.com/questions/3508077/does-scala-have-type-disjunction-union-types). Tanto la respuesta aceptada como la siguiente más calificada que refiere mi codificación de unión unboxed resuelven directamente esta pregunta. –
@dhg, si tanto ObjectA como ObjectB tienen una actualización de método() y el tipo T extiende una u otra de esas clases, podría saber que el tipo T tiene un método update(). –