【发布时间】:2020-07-20 16:08:46
【问题描述】:
我正在编写一个 http 客户端,这是我的签名:
def post[Req, Resp](json: Req)(implicit r: Reads[Resp], w: Writes[Req]): Future[Resp]
在幕后使用 play json。
当我这样使用它时
def create(req: ClusterCreateRequest): Future[ClusterCreateResponse] = endpoint.post(req)
我收到以下错误
diverging implicit expansion for type play.api.libs.json.Reads[Resp]
以下作品
def create(req: ClusterCreateRequest): Future[ClusterCreateResponse] = endpoint.post[ClusterCreateRequest, ClusterCreateResponse](req)
为什么类型推断没有按预期工作?我可以为此做些什么?
【问题讨论】:
-
您是否尝试过在
create签名中添加(implicit r: Reads[Resp], w: Writes[Req])是否适合您的情况? -
可能没有显式类型参数,某些类型被推断为
Nothing。并尝试为Nothing解析类型类的实例会导致“发散隐式扩展”。
标签: scala playframework type-inference implicit