リストの場合、型宣言なしでは、すべての要素を調べ、共通型を検索しようとします。あなたのケースでは、IntはDoubleに変換できるので、混合リストをリストに変換します。[Double]あなたのIntを宣伝します。
マップコンストラクタは、一連の2タプルを取ります。
scala> List((1, "one"), (2.0, "two.oh"))
res0: List[(AnyVal, String)] = List((1,one), (2.0,two.oh))
Tuple2 [INT、文字列]は自動的にTuple2 [ダブル、文字列]に昇格することができません。あなただけのタプルのリストを構築している場合は、同じ動作になるだろう。何らかの理由で
scala> val x = List[(Double, String)]((1, "one"), (2.0, "two.oh")).toMap
x: scala.collection.immutable.Map[Double,String] = Map(1.0 -> one, 2.0 -> two.oh)
:
scala> val x: List[(Double, String)] = List((1, "one"), (2.0, "two.oh"))
x: List[(Double, String)] = List((1.0,one), (2.0,two.oh))
または
scala> val x = List[(Double, String)]((1, "one"), (2.0, "two.oh"))
x: List[(Double, String)] = List((1.0,one), (2.0,two.oh))
またはあなたの場合:この場合、あなたは型宣言でビットをコンパイラを手助けする必要がありますマップ上の型宣言を使用しても機能しません。わからない理由:
scala> val x = Map[Double, String](1 -> "one", 2.0 -> "two.oh")
<console>:7: error: type mismatch;
found : (Int, String)
required: (Double, String)
val x = Map[Double, String](1 -> "one", 2.0 -> "two.oh")
2.9.2でも再現可能です。 –