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

Remove and return single value from parallel, mutable map

我正在 Scala 中包装一个可变的并行映射,并想从映射中删除并 return 单个值。目前实现如下...

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]

}

...但这似乎不够优雅。有没有更惯用的方法来完成这个?也许没有模式匹配?

您可以在 get 方法

返回的 Option 上使用 collect
backingStore.get(uuid).collect { case Some(value) =>
 backingStore -= item.uuid
 value
}