Scalaのエラー:実測一覧[シャア]は、リスト[ScalaObject]を必要
-
26-09-2019 - |
質問
私は、Scalaのコードのこのスニペットを持っています:
def prologList(l: List[ScalaObject], sep: String) =
"[" + (if (l isEmpty) "" else l.reduceLeft(_ + sep + _)) + "]"
def neighbors(s: State) = prologList(trans(s).toList, ", ")
def labels(s: State) = prologList(labeling(s).toList, ", ")
最後からラインコンパイルの罰金が、最後の行に、私はエラーを取得する
が見つかり
List[Char]
、必要List[ScalaObject]
(labeling
型Map[State, Set[Char]]
を有する。)
私は最後の行のコンパイル上の行)(Javaのではなく)List[Char]
がList[ScalaObject]
のサブタイプとして見ることができることを考え、そして2)1ので、ビットは、驚いて! (trans
は...にもかかわらず型Map[State, Set[State]]
を持っている)。
質問は明らかである、?私は間違って何をやっている、と私はそれをどのように修正すればよい。
解決
Char
ScalaObject
のサブタイプではありません。
あなたはすべてのAny
どのスーパータイプを持っています。あなたはおそらくScalaObject
でAny
を置き換えることができますし、それはあなたのコードのコンパイルを行う必要があります。
を参照してください。 http://www.scala-lang.org/node/128する型階層図についてます。
REPLでは、トラブルシューティングの種類との関係に暗黙的に関数を使用することができます:
scala> implicitly[Char <:< Any]
res0: <:<[Char,Any] = <function1>
scala> implicitly[Char <:< ScalaObject]
<console>:6: error: could not find implicit value for parameter e: <:<[Char,ScalaObject]
implicitly[Char <:< ScalaObject]
^
scala> implicitly[List[Char] <:< List[Any]]
res2: <:<[List[Char],List[Any]] = <function1>
scala> implicitly[List[Char] <:< List[ScalaObject]]
<console>:6: error: could not find implicit value for parameter e: <:<[List[Char],List[ScalaObject]]
implicitly[List[Char] <:< List[ScalaObject]]
の編集:?ところで、あなたはmkString
の
trans(s).mkString("[", ", ", "]")
所属していません StackOverflow