2

以下の例のコンパイル エラーを解決する最善の方法は何ですか? 'm' は GenMap 型でなければならず、myFun の引数を制御できないとします。

import scala.collection.GenMap

object Test {
    def myFun(m: Map[Int, String]) = m

    val m: GenMap[Int, String] = Map(1 -> "One", 2 -> "two")


    //Build error here on m.seq
    // Found scala.collection.Map[Int, String]
    // Required scala.collection.immutable.Map[Int, String]
    val result = myFun(m.seq)
}

編集:

もっとはっきり言うべきだった。私の実際のユースケースでは、myFun を制御できないため、Map に渡す必要があります。「m」は、GenMap として別の scala コンポーネントからも発生します。あるものを別のものに変換する必要がありますが、collection.Map と collection.immutable.Map の間に競合があるようです

4

1 に答える 1

2

m.seq.toMapあなたの問題を解決します。

API で提示された署名によると、エラー メッセージで必要であると言われている がtoMap返されます。メソッドによって返されるのは、より一般的な特性であり、不変マップの親であることに加えて、可変および並行マップの親でもあります。scala.collection.immutable.Mapscala.collection.Mapseq

于 2012-10-02T11:18:11.993 に答える