20

ObjectAとObjectBの2つのオブジェクトがあり、どちらもupdate()メソッドを使用しています。ObjectAまたはObjectBのいずれかを受け入れる関数を作成したい(ただし、他のタイプは受け入れない)。概念的には、これが私がやろうとしていることです。

def doSomething[T <: ObjectA | T <: ObjectB](obj: T) = {
    obj.update
}

この問題を解決する方法は他にもあると思いますが(たとえば、update()メソッドの構造型付け、共通基本クラスなど)、Scalaでこの方法を実行できるかどうかという質問があります。その場合、構文はどうなりますか?そして、これは何と呼ばれていますか?

4

1 に答える 1

20

Scalaには、互いに素な和集合を作るためのタイプEitherがあります。基本的に、次のようなことを行います。

def doSomething(obj: Either[ObjectA, ObjectB]) {
  obj.fold(fa, fb)
}

チェックアウトhttp://www.scala-lang.org/api/current/scala/Either.html

于 2012-03-08T00:12:01.017 に答える