1 回答

TA貢獻1794條經驗 獲得超8個贊
這里的問題是Map
你要傳遞給post
.?除一項外,所有項均為(String, String)
,但最后一項為(String, Option[String])
。
編譯器現在必須弄清楚該集合的類型可能是什么,并沿著類型層次結構向上移動。它能找出的最佳類型是Map[String, Serializable]
.?因為這是最窄的超類型 String 和 Option 實現。
這是帖子的定義:
def post[T: BodyWritable](body: T): Future[Response]
您可以看到 T 上存在類型約束,這意味著您需要一個隱式轉換器*來用于傳遞到 post to 的主體BodyWritable
。您可以在DefaultBodyWritables中找到隱式 BodyWritables?。并且沒有BodyWritable[Map[String, Serializable]]
。但有一個是為了Map[String, String]
你必須選擇:
更改 Map,使其具有 的類型,可以通過為via
Map[String, String]
提供默認值,或者如果地址為 None,則不向地圖添加地址。address
getOrElse
為 Map[String, Serialized] 編寫一個 BodyWritable。(這可能無法以令人滿意的方式實現)
我建議你選擇#1。
* 如果這不是此類隱式的正確術語,請糾正我。
添加回答
舉報