从并行可变映射中删除并返回单个值

时间:2016-11-03 13:12:55

标签: scala scala-collections

我在Scala中包装一个可变的并行映射,并希望从地图中删除并返回一个值。目前的实施如下......

class MyContainer[O] {

  def remove(uuid: UUID): Option[O] = backingStore.get(uuid) match {
      case result @ Some(item) => backingStore -= item.uuid; result
      case None => None
  }

  private[this] val backingStore: parallel.mutable.ParHashMap[UUID, O]

}

......但这似乎不够优雅。有没有更惯用的方法来实现这一目标?也许没有模式匹配?

1 个答案:

答案 0 :(得分:0)

您可以对collect方法返回的Option使用get

backingStore.get(uuid).collect { case Some(value) =>
 backingStore -= item.uuid
 value
}