我正在尝试包装播放json写宏扩展
def encoder[T] = Json.writes[T]
但是T
是未知的,所以不会编译,它会抱怨
no unapply method found
我知道我可以用Json.writes[T]
扩展替换JsMacroImpl.reads
。
这样做有更好的方法吗?
答案 0 :(得分:2)
一段时间后我遇到了类似的问题。你可以做这样的事情。
创建一个对象和内部写入编码器方法作为宏方法。
object SomeObj {
def encoder[T] = macro encoderRedirect_impl[T]
def encoderRedirect_impl[T : c.WeekTypeTag](c:Context) = {
q"Json.writes[${c.weakTypeOf[T]}]"
}
}
这是我理解的宏重定向。但您必须在单独的项目中编写此代码,并将其用作项目的依赖项。