如何基于依赖类型创建泛型约束?

How to create generic constraint based on dependent type?

我有以下类

trait Identifiable 


case class Address extends Identifiable


abstract class AbstractTable[T] {
  type TableElementType
}


class TableQuery[E <: AbstractTable[_]]


class Addresses(tag: Tag) extends Table[Address](tag, "addresses")

如何制作

abstract class AbstractOptionBaseRepsitory[T <: AbstractTable[_]]

仅接受 T 其中 T#TableElementTypeIdentifiable

的子类

怎么样

 abstract class IdentifiableAbstractTable[T] extends AbstractTable[T] {
    type TableElementType <: Identifiable
 }

 abstract class AbstractOptionBaseRepository[T <: IdentifiableAbstractTable[_]]