Scala: Map の値を加算しながらマージする
Scalaz を使うとシンプル。
sbt 設定例
libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.0.6"
実行例
scala> import scalaz.Scalaz._ import scalaz.Scalaz._ scala> Map('a -> 10, 'b -> 20, 'c -> 30) |+| Map('a -> 5, 'c -> 7, 'd -> 9) res0: scala.collection.immutable.Map[Symbol,Int] = Map('a -> 15, 'c -> 37, 'd -> 9, 'b -> 20)
引き算をするなら、こんな感じだろうか。
scala> Map('a -> 10, 'b -> 20, 'c -> 30) |+| Map('a -> 5, 'c -> 7, 'd -> 9).mapValues(-_) res1: scala.collection.immutable.Map[Symbol,Int] = Map('a -> 5, 'c -> 23, 'd -> -9, 'b -> 20)
0 件のコメント:
コメントを投稿