Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 阿诺姆和得到[双倍]_Scala_Playframework 2.0_Pattern Matching_Anorm - Fatal编程技术网

Scala 阿诺姆和得到[双倍]

Scala 阿诺姆和得到[双倍],scala,playframework-2.0,pattern-matching,anorm,Scala,Playframework 2.0,Pattern Matching,Anorm,我仍在努力掌握scala、Play和anorm的某些方面。现在,我阅读了所有的手册和在线文档,但我似乎能找到一个令人满意的解决方案 我有以下代码用于检索名为MyThing的对象: case class MyThing(val code: String, val type:String, val value: Double, var id:Long) object MyThing{ val myThingConverter = { get[String]("type") ~ get

我仍在努力掌握scala、Play和anorm的某些方面。现在,我阅读了所有的手册和在线文档,但我似乎能找到一个令人满意的解决方案

我有以下代码用于检索名为MyThing的对象:

case class MyThing(val code: String, val type:String, val value: Double, var id:Long)

object MyThing{

  val myThingConverter = {
    get[String]("type") ~ get[String]("code")~get[Double]("value") ~ get[Long]("id") match {
      case type ~ code ~ value ~ id  =>
        MyThing( "test", " test", value ,  213 )
    }
  }


  val loadQuery =
    """
        "select  * from THINGS where id = {id}"
    """

  def loadThings(id: Long): Option[Thing] = {
    DB.withConnection {
      implicit c =>
        SQL(loadQuery)
          .on('id -> id).as(myThingConvert *)
    }.headOption
}
问题在于“虚构(“测试”、“测试”、值213)”部分出现错误。错误是针对“值”:

我做错了什么

编辑:添加缺少的参数

附言

我觉得,从select查询的结果集中提取值以创建对象的模式匹配是非常过分的。anorm中是否有其他方法可以轻松完成此任务?

当我将转换器中的“匹配”替换为“映射”时,它会为我编译:

val myThingConverter = {
  get[String]("type") ~ get[String]("code") ~ getDouble]("value") ~ get[Long]("id") map {
    case tpe ~ code ~ value ~ id  =>
      MyThing( "test", " test", value ,  213 )
  }
}

此外,您不能/不应该在Scala中命名变量“type”。

您对case类(神话)的定义是否缺少type参数?您提供的定义只有三个参数,您使用它的时候就好像使用了四个参数一样。很抱歉,复制/粘贴错误。修好了。谢谢
val myThingConverter = {
  get[String]("type") ~ get[String]("code") ~ getDouble]("value") ~ get[Long]("id") map {
    case tpe ~ code ~ value ~ id  =>
      MyThing( "test", " test", value ,  213 )
  }
}