0
스칼라에서 변경 가능한 병렬 맵을 래핑하고 맵에서 단일 값을 제거하여 반환하려고합니다. 현재 구현은 다음과 같습니다 ...병렬, 변경 가능 맵에서 단일 값 제거 및 반환
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
을 사용할 수 있습니까? 예 : TrieMap을 통해? – Reactormonk@Reactormonk 단일 주 스레드 만 컨테이너에 액세스하지만 컨테이너 메소드가 병렬화 될 계획입니다. 그러나 당신의 요점을 이해하고 TrieMap을 살펴볼 것입니다 (이미'remove' 메소드가 있습니다). – davidrpugh