Wenn ich versuche, IDictionary mit dem folgenden CodeF # Generisches IDictionary Erweiterung fehlgeschlagen
type Generic.IDictionary<'TKey, 'TValue> with
member this.GetOrAdd (key:'TKey, fun':'TKey -> 'TValue) =
match this.ContainsKey(key) with
| true -> this.Item(key)
| false ->
let val_ = fun' key
this.Add(key, val_)
val_
let dd = dict[(1,2); (3,4)]
let f = fun x -> 2*x
let d5 = dd.GetOrAdd(5, f)
Ich habe die folgenden Fehler in der Laufzeit zu verlängern.
auf FehlerSystem.NotSupportedException: Ausnahme vom Typ> 'System.NotSupportedException' wurde ausgelöst. bei [email protected]stem-> Collections-Generic-IDictionary
2-Add(TKey key, T value) at FSI_0011.IDictionary
2.GetOrAdd [TKey, TValue] (IDictionary2 this, >TKey key, FSharpFunc
2 Spaß ') in> D: \ BaiduYunDownload \ DroiEtl \ Droi.MyToPG \ Util.Sync.fs. Linie 259 bei $ FSI_0018.main @() in> D: \ BaiduYunDownload \ DroiEtl \ Droi.MyToPG \ Util.Sync.fs: Linie 264 aufgrund Gestoppt
Aber der Compiler beschwert sich nicht beim Bau ... Bitte helfen Sie mir ...
Es wäre etwas schneller, 'TryGetValue' anstelle von' ContainsKey' zu verwenden, da der "bereits existierende" Codepfad nur eine Wörterbuchsuche anstelle der zwei Suchvorgänge, die Sie gerade machen, durchführen müsste. –