我有以下對象用於將對象ParsedItemDocument
轉換爲json
字符串。我應該注意到ParsedItemDocument
是trait
。我的問題是編譯器無法識別在第二個片段中調用的隱式轉換。隱式轉換工作還有什麼需要做的嗎?斯卡拉隱式轉換無法識別
import scala.language.implicitConversions
import wikidataParser.ParsedItemDocument
object Converters {
def toJson(obj: Any): String = {
val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)
val out = new StringWriter
mapper.writeValue(out, obj)
return out.toString()
}
implicit def parsedItemDocumentToJsonString
(item: ParsedItemDocument): String = {
Converters.toJson(item)
}
}
現在,我使用下面的代碼片段在我的代碼
import tools.Converters._
import wikidataParser.ParsedItemDocument
class WikipediaRankingTester2 extends FlatSpec {
"It" should "do something" in {
val jsonrdd:RDD[String]=rankedItems.map(t:Long,ParsedItemDocument)=>
t._2.parsedItemDocumentToJsonString)//compilation error here
}
}
有在這個片段中不需要明確coversions。你的編譯錯誤是因爲你的代碼在語法上是錯誤的(括號不平衡,t被聲明爲Long等),而不是隱式轉換。我對你的建議是,現在忘記implicits,並專注於掌握scala語法和基本概念。 – Dima
與問題相關(對於搜索者來說這裏是這個問題),但不是問題的主體:如果你的隱式轉換也需要一個隱式參數......不要忘記有一個隱式值可用。 – bbarker