我想寫這樣的方法:斯卡拉:在方法中使用TypeTag
def foo[T:TypeTag](value: Int):String = {
(/* do something */).mapTo[T].map(_.toJson)
}
其中mapTo
有簽名:
def mapTo[S](implicit tag: ClassTag[S]): Future[S] = { ... }
使用org.scala-lang.scala-reflect
能夠做這樣的事情:
foo[String](1)
,foo[List[Double]](10)
等等。
我試圖用不同的方式編寫它,但我得到了不同的編譯錯誤。 有沒有什麼辦法讓這樣的工作?
Error:(26, 45) Cannot find JsonWriter or JsonFormat type class for T
(/* do something */).mapTo[T].map(_.toJson)
^
Error:(26, 45) not enough arguments for method toJson: (implicit writer: spray.json.JsonWriter[T])spray.json.JsValue.
Unspecified value parameter writer.
(/* do something */).mapTo[T].map(_.toJson)
^
此鏈接How to get ClassTag form TypeTag, or both at same time?不能說明我在做什麼。它看起來像試圖「過濾」某些類的一些信息。
[如何獲得ClassTag表單TypeTag,或兩者同時?](http://stackoverflow.com/questions/18729321/how-to-get-classtag-form-typetag-or-both-在同一時間) – Kolmar
我無法從你的建議中得到答案。 – Randomize