Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8cbb761

Browse files
forkiKevinRansom
authored andcommitted
Remove double lookups from HashMultiMap (#4752)
* Remove double lookups from HashMultiMap* Remove double lookups from HashMultiMap
1 parentcdd8e31 commit8cbb761

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

‎src/utils/HashMultiMap.fs‎

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ type internal HashMultiMap<'Key,'Value>(n: int, hasheq: IEqualityComparer<'Key>)
146146

147147
members.ContainsKey(k)= s.ContainsKey(k)
148148

149-
members.TryGetValue(k,r)=if s.ContainsKey(k)then(r<-s.[k];true)elsefalse
149+
members.TryGetValue(k,r)=match s.TryFind kwith Some v->(r<-v;true)|_->false
150150

151151
members.Remove(k:'Key)=
152152
letres= s.ContainsKey(k)in
@@ -159,14 +159,17 @@ type internal HashMultiMap<'Key,'Value>(n: int, hasheq: IEqualityComparer<'Key>)
159159
members.Clear()= s.Clear()
160160

161161
members.Remove(x)=
162-
letres= s.ContainsKey(x.Key)
163-
if res&& Unchecked.equals s.[x.Key] x.Valuethen
164-
s.Remove(x.Key);
165-
res
166-
167-
members.Contains(x)=
168-
s.ContainsKey(x.Key)&&
169-
Unchecked.equals s.[x.Key] x.Value
162+
match s.TryFind x.Keywith
163+
| Some v->
164+
if Unchecked.equals v x.Valuethen
165+
s.Remove(x.Key)
166+
true
167+
|_->false
168+
169+
members.Contains(x)=
170+
match s.TryFind x.Keywith
171+
| Some vwhen Unchecked.equals v x.Value->true
172+
|_->false
170173

171174
members.CopyTo(arr,arrIndex)= s|> Seq.iteri(fun j x-> arr.[arrIndex+j]<- x)
172175

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp