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 件のコメント:
コメントを投稿