我有两个对象,objecta和Objectb,均具有方法更新()。我想编写一个接受对象或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/eits.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top