オブジェクトの変換を行うためのオブジェクトは、ParsedItemDocument
からjson
までです。 ParsedItemDocument
はtrait
です。私の問題は、2番目のスニペットで呼び出される暗黙の変換がコンパイラによって認識されないということです。暗黙の変換が機能するために必要なことは何ですか?今スカラ暗黙の変換が認識されない
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などと宣言されています)。私のアドバイスは、今のところ黙示を忘れて、代わりにスカラの構文と基本概念をマスターすることに集中することです。 – Dima
質問に関連して(ここに乗っているサーチャーのために)質問の本文ではありません:あなたの暗黙的な変換にも暗黙的なパラメータが含まれていれば...暗黙の値を利用できることを忘れないでください。 – bbarker