scala - 使用 case 类的伴随对象作为类型参数时编译错误

标签 scala spray

我正在使用案例类在 Scala 中创建许多用于喷射的 json 消息。例如:

  case class Foo(name: String, attrs: List[String])
  implicit val fooFormat = jsonFormat2(Foo)
  object Foo {
    case class Invalid(error: String)
  }
  case class Bar(name: String, kv: Map[String, String])
  implicit val barFormat = jsonFormat2(Bar)

在上面的片段中,barFormat编译,但 fooFormat才不是:
type mismatch; found : Foo.type required: (?, ?) => ? 
 Note: implicit value barFormat is not applicable here because it comes 
 after the application point and it lacks an explicit result type

我不想用 barFormat代替 fooFormat ,而且我明白一个case类会自动生成一个伴生对象,但是我不明白为什么这里会出现编译器错误,错误信息我很难破译。有谁知道这里的问题是什么以及如何解决它,最好不要删除我的 Foo伴侣对象?

最佳答案

从你的编译错误来看,它看起来像 jsonFormat2期望有两个参数的函数。你的意思是传递Foo的构造函数吗?和 Bar进去?如果是这样,你应该做 Foo.applyBar.apply .

关于scala - 使用 case 类的伴随对象作为类型参数时编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24273617/

相关文章:

scala - Scala 对 Java 类文字的模拟是什么,例如Foo.class?

Scala Spark - map 的DataFrame列上的空 map (String,Int)

scala - 过滤 kafka 消息时 Spark 作业失败

scala - 是否有一种简单的方法可以在 SBT 中指定全局依赖排除

scala - 如何匹配路由中的特定接受 header ?

http - 带有喷雾示例的分块响应处理

Scala - 调用具有泛型类型参数的方法,给定确定正确类型的字符串值

json - 使用 Spray JSON 自定义 JSON 对象属性名称

scala - 如何解析喷雾路由中的获取请求参数?

scala - 执行 Apache spark ML 管道时出错