Scalaのエラー:実測一覧[シャア]は、リスト[ScalaObject]を必要

StackOverflow https://stackoverflow.com/questions/4233342

  •  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]

labelingMap[State, Set[Char]]を有する。)

私は最後の行のコンパイル上の行)(Javaのではなく)List[Char]List[ScalaObject]のサブタイプとして見ることができることを考え、そして2)1ので、ビットは、驚いて! (transは...にもかかわらず型Map[State, Set[State]]を持っている)。

質問は明らかである、?私は間違って何をやっている、と私はそれをどのように修正すればよい。

役に立ちましたか?

解決

Char ScalaObjectのサブタイプではありません。

上部にはあなたはすべてのAnyどのスーパータイプを持っています。あなたはおそらくScalaObjectAnyを置き換えることができますし、それはあなたのコードのコンパイルを行う必要があります。

を参照してください。 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("[", ", ", "]")
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top