のがあり、Tuple
にTuple
変換する必要がありMap
ます。例えば
(("a", 3), ("b", 1), ("c", 7), ..., ("z", 10))
結果としてMap
Map("a" -> 3, "b" -> 1, ..., "z" -> 10)
Scalaでこれを行う方法は何ですか?
のがあり、Tuple
にTuple
変換する必要がありMap
ます。例えば
(("a", 3), ("b", 1), ("c", 7), ..., ("z", 10))
結果としてMap
Map("a" -> 3, "b" -> 1, ..., "z" -> 10)
Scalaでこれを行う方法は何ですか?
scala> tuples
res0: ((String, Int), (String, Int), (String, Int)) = ((a,3),(b,1),(c,7))
scala> tuples.productIterator.map{case (a,b)=> (a -> b)}.toMap
res1: scala.collection.immutable.Map[Any,Any] = Map(a -> 3, b -> 1, c -> 7)
scala> res1("a")
res2: Any = 3
scala> res1("b")
res3: Any = 1
scala> res1("c")
res4: Any = 7
最初のステップとして、任意のタプルt
(実際には のインスタンス) に対して、 を使用して、そのコンポーネントに対して を取得scala.Product
できます。t.productIterator
Iterator[Any]
次に、マップを取得するには、次の操作を実行できます。
t.productIterator.asInstanceOf[Iterator[(String, Int)]].toMap
注意: 引数の型が同種であるため、タプルを使用するのは少し奇妙に思えます。List[(String, Int)]
いいねを使わない理由
List(("a", 3), ("b", 1), ("c", 7), ..., ("z", 10))