Как определить универсальный тип в Scala?
В Slick 2 мы можем отобразить таблицы следующим образом:
case class Cooler(id: Option[Int], minTemp: Option[D,ouble], maxTemp: Option[Double])
/**
* Define table "cooler".
*/
class Coolers(tag: Tag) extends Table[Cooler](tag, "cooler") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def minTemp = column[Double]("min_temp", O.Nullable)
def maxTemp = column[Double]("max_temp", O.Nullable)
def * = (id.?, minTemp.?, maxTemp.?) <> (Cooler.tupled, Cooler.unapply _)
}
object Coolers {
val tableQuery = TableQuery[Coolers]
}
поскольку у меня много таблиц, я хочу определить для них общие методы, напримерfind
, delete
, update
поэтому я должен определить эти методы в суперклассе, откуда расширять мои объекты (object Coolers extends TableUtils[Coolers, Cooler]
). Чтобы определить эти методы, мне нужноtableQuery
выйти из моего объекта в этом суперклассе, поэтому я попробовал это так:
abstract class TableUtils[T <: Table[A] , A] {
val tableQuery = TableQuery[T]
}
но я получаю ошибку наtableQuery
определение:
class type required but T found
Кто-нибудь знает, что я делаю не так?