Принять несколько типов для параметра в 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