Принять несколько типов для параметра в scala

У меня есть два объекта: ObjectA и ObjectB, оба с методом update(). Я хочу написать функцию, которая принимает ObjectA или ObjectB (но не другие типы). Концептуально это то, что я пытаюсь сделать:

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

Я понимаю, что есть другие способы решения этой проблемы (например, структурная типизация метода update(), общий базовый класс и т.д.), но мой вопрос заключается в том, что это можно сделать в Scala, и если это так что такое синтаксис? И что это называется?

Ответы

Ответ 1

В Scala существует тип Ли, чтобы сделать несвязный союз. В принципе, вы сделаете что-то вроде:

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

Оформить заказ http://www.scala-lang.org/api/current/scala/Either.html