如何使用2个参数编译查询

时间:2014-06-26 18:46:54

标签: scala slick currying

现在确定如何正确执行此操作,我正在尝试这样做:

def byId(id: Column[Int], locationId: Column[Int]) = {
  for {
    m <- users if m.id === id && m.locationId == locationId
  } yield m
}

val byIdCompiled = Compiled(byId _)  // ???????????? how to pass second parameter?

def getById(id: Int, locationId: Int): Option[User] {
  byIdCompiled(id, locationId).firstOption
}

在编译我的光滑查询时,如何使用2个参数来调整函数?

1 个答案:

答案 0 :(得分:1)

Slick文档中提供的示例使用单个下划线来编码多个参数。

http://slick.typesafe.com/doc/2.0.0/queries.html

def userNameByIDRange(min: Column[Int], max: Column[Int]) =
  for {
    u <- users if u.id >= min && u.id < max
  } yield u.first

val userNameByIDRangeCompiled = Compiled(userNameByIDRange _)

// The query will be compiled only once:
val names1 = userNameByIDRangeCompiled(2, 5).run
val names2 = userNameByIDRangeCompiled(1, 3).run