我的代码看起来像这样
def okJsonify[T](data: T)(implicit tjs: Writes[T]): Result = Results.Ok(toJson(data)(tjs))
toJson
的定义:play-json_2.11-2.3.7-sources.jar!/play/api/libs/json/Json.scala
def toJson[T](o: T)(implicit tjs: Writes[T]): JsValue = tjs.writes(o)
我发现我可以像这样编写更短的代码(省略(tjs)
)
def okJsonify[T](data: T)(implicit tjs: Writes[T]): Result = Results.Ok(toJson(data))
但不能像这样进一步缩短:
def okJsonify[T](data: T): Result = Results.Ok(toJson(data))
有没有人有这方面的想法?谢谢!
答案 0 :(得分:1)
显而易见:toJson
需要Write[T]
参数。由于它是隐式的,因此可以隐式传递,因此toJson(data)(tjs)
(显式)和tJson(data)
(隐式)都可以工作。但是,如果你没有 要传递Writes[T]
值,例如最后一个案例,则无法明确或隐含地传递任何内容。