Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何编译带有2个参数的查询_Scala_Slick_Currying - Fatal编程技术网

Scala 如何编译带有2个参数的查询

Scala 如何编译带有2个参数的查询,scala,slick,currying,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 pa

现在确定如何正确执行此操作,我正在尝试执行以下操作:

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
}
def byId(id:Column[Int],locationId:Column[Int])={
为了{

mSlick docs中提供的示例使用单下划线对多个参数进行编码

def userNameByIDRange(最小:列[Int],最大:列[Int])=
为了{
u=最小值和u.id<最大值
}美国第一
val userNameByIDRangeCompiled=Compiled(userNameByIDRange)
//查询将只编译一次:
val names1=userNameByIDRangeCompiled(2,5)。运行
val names2=userNameByIDRangeCompiled(1,3)。运行

您尝试过这个吗?(如果是,您会遇到什么错误?)我之所以问这个问题,是因为它应该已经可以正常工作了。我会再试一次,我想我是在做编译(byId)\uuu)在此之前,我尝试过。您使用u的方式意味着整个参数列表,而不仅仅是一个参数。通过byIdCompiled的参数,我得到了错误“application not take parameters”。
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