什么是隐式泛型函数的签名,它使用Scala宏进行生成

时间:2014-07-01 08:50:54

标签: json scala implicit scala-macros

我需要在JSON中进行序列化 - 密封的特征层次结构,它看起来像:

  sealed trait Foo[T]
  case class Bar(x: Int) extends Foo[Int]
  case class Baz(s: String) extends Foo[String]
  case object Bah extends Foo[Void]

我正在使用play-json-variants为此serialiati https://github.com/julienrf/play-json-variants分叉到https://github.com/mavarazy/play-json-variants。我做了必要的修改,或者我认为:)

宏签名如下:

object Variants {

  /**
   * @tparam A The base type of a case class hierarchy.
   * @return A [[play.api.libs.json.Format]] for the type hierarchy of `A`.
   */
  def format[A]: Format[A] = macro Impl.format[A]

问题是我无法弄清楚implicit function的签名应该是什么。

我试过

  implicit def fooFormat[A]() = Variants.format[Foo[A]]
  implicit def fooFormat[A <: Foo[A]]() = Variants.format[A]

但是所有人都抱怨特质Foo接受类型参数错误。

这是什么签名?

0 个答案:

没有答案