gpt4 book ai didi

mysql - 返回两种类型的 Slick TableQuerys 之一的 Scala 函数

转载 作者:行者123 更新时间:2023-11-30 21:42:47 25 4
gpt4 key购买 nike

假设我有以下特征。

trait ModelTrait{
def id: Option[Long]
def name: String
}

而且我有两个表。它们的案例类和 tableQuery 字段如下所示。

val modelOneTable = TableQuery[ModelOnes]
val modelTwoTable = TableQuery[ModelTwos]

case class ModelOne(id: Option[Long], name: String) extends ModelTrait

case class ModelTwo(id: Option[Long], name: String) extends ModelTrait

我想创建一个函数,根据输入返回 tableQuery 字段之一。像这样:

def getTableQuery(which: String): TableQuery[Table[ModelTrait]] = {
which match {
case "One" => modelOneTable
case _ => modelTwoTable
}

请注意,modelOneTableTableQuery[ModelOnes]ModelOnes(带有 s)类扩展 Table[ModelOne]。这与 ModelTwo 相同。因此函数返回 TableQuery[Ta​​ble[ModelTrait]] 的原因。

class ModelOnes(tag: Tag) extends Table[ModelOne](tag, "modelOnes") {
// ...
}

class ModelTwos(tag: Tag) extends Table[ModelTwo](tag, "modelTwos") {
// ...
}

但是我的 case 语句中出现了类型不匹配错误。谁能帮忙?

最佳答案

您需要为其他字符串指定 case 子句:

which match {
case "One" => modelOneTable
case "Two" => modelTwoTable
case _ => ... // which TableQuery should be returned for other strings
}

关于mysql - 返回两种类型的 Slick TableQuerys 之一的 Scala 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50816335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com