Chr*_*isB 4 scala implicit traits spray-json
JsonWriter[T]当调用toJson一个实例时,spray-json依赖于一个范围内的隐式存在T.
假设我有一个具有几个具体子类型的特征,每个子类型都有一个JsonWriter:
trait Base
case class Foo(a: Int) extends Base
case class Bar(a: Int, b: Int) extends Base
implicit val FooFormat = jsonFormat1(Foo)
implicit val BarFormat = jsonFormat2(Bar)
def go(o: Base) = {
o.toJson
}
Run Code Online (Sandbox Code Playgroud)
go不编译,因为有一个为基地没有JsonWriter,即使是对所有具体的子类型的作家.
如何重新组织此代码,以便Base使用适当的json格式化程序的通用函数?
您可以使用带有类型和上下文边界的泛型方法.像这样:
def go[T <: Base : JsonWriter](t: T) = t.toJson
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1522 次 |
| 最近记录: |