我有以下类层次结构:
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
方法定义——我只是不知道我应该在那里指定什么类型才能让这段代码工作?