接受Scala中参数的多种类型
-
09-12-2019 - |
题
我有两个对象,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
不隶属于 StackOverflow