gpt4 book ai didi

scala - 将自定义谓词传递给 TableQuery 的过滤方法

转载 作者:行者123 更新时间:2023-12-03 03:49:39 26 4
gpt4 key购买 nike

我正在尝试概括一个函数,以使用 filter 过滤掉 slick 中的一些 TableQuery,因此我创建了以下方法:

def fetchCoffee(coffe: String)(p: MyTable => Boolean) =
// ...
myTableQuery.filter(p)
// ...

我这样调用它:

fetchCoffee("micoffee")(_.coffeeId == id)

但它因以下错误而失败:

Error:(43, 29) inferred type arguments [Boolean] do not conform to method filter's type parameter bounds [T <: slick.lifted.Rep[_]]
val query = MyTable.filter(p)
Error:(43, 36) type mismatch;
found : MyTable => Boolean
required: MyTable => T
val query = myTableQuery.filter(p)
Error:(43, 35) Type T cannot be a query condition (only Boolean, Rep[Boolean] and Rep[Option[Boolean]] are allowed
val query = myTableQuery.filter(p)

我尝试将 p 的类型更改为 p: MyTable => Rep[Boolean]Rep[MyTable => Boolean] 但仍然无法正常工作。我还尝试将 ExecutionContext 作为隐式传递给 fetchCoffee,但没有成功。

我应该如何编写谓词类型以符合类型绑定(bind)T

最佳答案

尝试使用 Rep[Boolean] 代替 Boolean,使用 === 代替 ==

def fetchCoffee(coffe: String)(p: MyTable => Rep[Boolean]) = {
myTableQuery.filter(p)
}

fetchCoffee("micoffee")(_.coffeeId === id)

关于scala - 将自定义谓词传递给 TableQuery 的过滤方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58259921/

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