ジェネリックスを使用してバインドされたリストにコンパニオンオブジェクトを格納することにより、コンパニオンオブジェクトの「レジストリ」をまとめようとしています。
例が最適です:
trait Foo
case class A() extends Foo
object A
case class B() extends Foo
object B
case class C() extends Foo
object C
trait HasFoos {
def allFoos: List[ _ <: Foo.type]
}
case class FooLookup() extends HasFoos {
def allFoos = List(A,B,C)
}
FooLookup"defallFoos"で報告されたエラーは
- 型の不一致; 見つかった:A.typeが必要:Foo.type
HasFoos.allFoosはどのように見える必要がありますか、あるいは、List(A、B、C)はどのように見える必要がありますか。
私も試しdef allFoos: List[ _ <: Foo]
ました。ただし、エラーも発生します。クラスではなく「コンパニオンオブジェクト」を使用したいのですが、その周りにもっと一般的な砂糖の粉が必要だと確信していますが、何が必要かはわかりません。
前もって感謝します。