次のクラス階層があります。
trait Entity {
type E <: Entity
type S <: Something[E]
def in: S
}
trait Something[E <: Entity] {
def doSomething {
// something
}
}
class A extends Entity {
def in = InA
object InA extends Something[A]
}
class B extends Entity {
def in = InB
object InB extends Something[B]
}
class C extends Entity {
def in = InC
object InC extends Something[C]
}
そして私がしたい他のどこか:
val entities = Seq[Entity]
entities.map(_.in.doSomething)
ただし、型システムではそのin
メソッド定義を回避できません。コードを機能させるために、そこでどの型を指定すればよいのかわかりません。