2017-08-07 88 views
1

我有以下類如何基於依賴類型創建通用約束?

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

回答

1

一個子類如何

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

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

謝謝。該解決方案看起來非常好。 – ntviet18