从并行可变映射中删除并 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
}
我正在 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
}