我有點困惑,爲什麼下面的代碼不工作:Scala的通用功能......在功能使用T-
implicit val connectReads: Reads[ConnectCommand] = (
(JsPath \ "uuid").read[String]
)(ConnectCommand.apply _)
private def generateMessage[T](json: JsValue) = json.validate[T] match {
case s: JsSuccess[T] => s.asOpt
case e: JsError => None
}
的功能將被稱爲如下:
generateMessage[ConnectCommand](json)
我得到以下錯誤:
Error:(59, 64) No Json deserializer found for type T. Try to implement an implicit Reads or Format for this type.
private def generateMessage[T](json: JsValue) = json.validate[T] match {
^
Error:(59, 64) not enough arguments for method validate: (implicit rds: play.api.libs.json.Reads[T])play.api.libs.json.JsResult[T].
Unspecified value parameter rds.
private def generateMessage[T](json: JsValue) = json.validate[T] match {
^
我是相當新的Scala仿製藥...有什麼辦法做我想在這裏做什麼?
Cay S. Horstman撰寫的'不耐煩的斯卡拉'在關於暗示方面有很好的篇章,但是可能很難在不閱讀前面的章節的情況下跳入其中。 –
感謝您的提示!我其實讀過那本書的一半......太棒了。我想是時候閱讀下半場了! – threejeez
我發現這個練習非常有用 - 有些花了很多時間,在後面的章節中遇到了很多困難。 https://github.com/BasileDuPlessis/scala-for-the-impatient提供了一整套完整的高質量解決方案。最好先開發自己的解決方案,然後看看Basile是如何做到的,以便學習另一種方法。 –