我在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]
}
......但这似乎不够优雅。有没有更惯用的方法来实现这一目标?也许没有模式匹配?
答案 0 :(得分:0)
您可以对collect
方法返回的Option
使用get
backingStore.get(uuid).collect { case Some(value) =>
backingStore -= item.uuid
value
}