为什么我不能在这里省略隐式参数?
Why can't I omit the implicit parameter here?
我的代码是这样的
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))
有人对此有想法吗?谢谢!
很明显:toJson
需要一个 Write[T]
参数。由于它是隐式的,因此可以隐式传递,因此 toJson(data)(tjs)
(显式)和 tJson(data)
(隐式)都有效。但是,如果您 没有 要传递的 Writes[T]
值,例如最后一种情况,则没有任何内容可以显式或隐式传递。
我的代码是这样的
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))
有人对此有想法吗?谢谢!
很明显:toJson
需要一个 Write[T]
参数。由于它是隐式的,因此可以隐式传递,因此 toJson(data)(tjs)
(显式)和 tJson(data)
(隐式)都有效。但是,如果您 没有 要传递的 Writes[T]
值,例如最后一种情况,则没有任何内容可以显式或隐式传递。