首页 > 解决方案 > 在 Slick 和 Scala 中使用带参数的过滤函数进行柯里化?

问题描述

如何定义 currying 参数 (???) 可以更改以下函数中的过滤器:

def readManRleIspBy(value:String)(???) = {
  val query= tblManRleIsp.filter(??? === value)
  db.run(query.result)
}

我需要在另一边定义(???)。例如 readManRleIspBy("test")(f=>f.rlePattern)readManRleIspBy("test")(f=>f.rleName)

标签: scalaslickcurrying

解决方案


Rep为此,您必须使用 slick 。下面的代码TableRow是您使用 slick 在数据库中持久化的类的名称。

例如,如果我坚持雇员,那么我写雇员表,我的TableRow变成Employee

def readManRleIspBy[A](value: A)(f: Rep[TableRow] => Rep[A]) = {
  val query= tblManRleIsp.filter(row => f(row) === value)
  db.run(query.result)
}

现在你可以写

readManRleIspBy("test")(f => f.rlePattern)

并且

readManRleIspBy("test")(f => f.rleName)

免费建议:请尝试使用更好的名称


推荐阅读