假设我有一个来自X => Boolean
的函数,其中X
是一些可以比较的类。我还有一个DAO,它从数据库中读取X
的集合。我希望DAO中的函数看起来像这样:
retrieveXs(criteria: X => Boolean)
然后在Slick的criteria
函数中使用filter
函数,如下所示:
XQuery.filter(criteria).result
所以例如我可以这样做:
retrieveXs(((a :X) => (b: X) => b > a)(X(1)))
所以我会从数据库中获取大于X(1)
的所有元素。
当然,Slick的过滤功能需要Rep[X] => Rep[Boolean]
,所以我的问题是如何将criteria
函数提升为Rep[X] => Rep[Boolean]
,假设我已经有了映射X
。这听起来像fmap
之类的工作,但我无法找到如何做到这一点。