Принять несколько типов для параметра в Scala
-
09-12-2019 - |
Вопрос
У меня есть два объекта, Objecta и ObjectB, как с обновлением метода ().Я хочу написать функцию, которая принимает ODEATA или OBJECTB (но никаких других типов).Концептуально, это то, что я пытаюсь сделать:
def doSomething[T <: ObjectA | T <: ObjectB](obj: T) = {
obj.update
}
.
Я понимаю, что есть другие способы решения этой проблемы (например, структурное набрав метода обновления (), общий базовый класс и т. Д.) Но мой вопрос в том, что можно сделать так в SCALA, и если так, чтосинтаксис?И что это называется?
Решение
в Scala, есть тип либо для неисправности профсоюза. По сути, вы сделаете что-то вроде:
def doSomething(obj: Either[ObjectA, ObjectB]) {
obj.fold(fa, fb)
}
.
Checkout http://www.scala-lang.org/api/current/scala / deoted.html
Не связан с StackOverflow