1 回答

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