Jas*_*ler 16 types scala structural-typing
我有两个对象,ObjectA和ObjectB,都有方法update().我想编写一个接受ObjectA或ObjectB(但没有其他类型)的函数.从概念上讲,这就是我要做的事情:
def doSomething[T <: ObjectA | T <: ObjectB](obj: T) = {
obj.update
}
Run Code Online (Sandbox Code Playgroud)
我意识到还有其他方法可以解决这个问题(例如,update()方法的结构类型,公共基类等)但我的问题是它可以在Scala中这样做,如果是这样,语法是什么?这叫什么?
blo*_*rat 16
在Scala中,有一种类型可以使一个不相交的联合.基本上,你会做类似的事情:
def doSomething(obj: Either[ObjectA, ObjectB]) {
obj.fold(fa, fb)
}
Run Code Online (Sandbox Code Playgroud)
结帐http://www.scala-lang.org/api/current/scala/Either.html