なんじゃくにっき

プログラミングの話題中心。

getOrElseUpdateOpt?

scala.collection.mutable.MapLike[A,B]のgetOrElseUpdateは戻り値の型がBだけど、
Option[B]で返すgetOrElseUpdateOptみたいなのが欲しくなった。


こんなの。
なんか他にいい方法があるきもする・・


trait MyMap[A, B] extends Map[A, B] {
def getOrElseUpdateOpt(key: A, default: => Option[B]): Option[B] = {
get(key) match {
case Some(v1) => Some(v1)
case None => {
val d = default
d match {
case Some(v2) => this(key) = v2
case None =>
}
d
}
}
}
}