Scala: Map の値を加算しながらマージする
Scalaz を使うとシンプル。
sbt 設定例
libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.0.6" |
実行例
1 2 3 4 5 | 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) |
引き算をするなら、こんな感じだろうか。
1 2 | 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 件のコメント:
コメントを投稿