我有两个对象,ObjectA和ObjectB,都有方法update()。我想编写一个接受ObjectA或ObjectB(但没有其他类型)的函数。从概念上讲,这就是我想要做的事情:
def doSomething[T <: ObjectA | T <: ObjectB](obj: T) = {
obj.update
}
我意识到还有其他方法可以解决这个问题(例如,update()方法的结构类型,公共基类等)但我的问题是它可以在Scala中这样做,如果是这样,那么什么是语法?这叫什么?
答案 0 :(得分:16)
在Scala中,有一种类型可以使一个不相交的联合。 基本上,你会做类似的事情:
def doSomething(obj: Either[ObjectA, ObjectB]) {
obj.fold(fa, fb)
}