implementieren So, da dann folgenden CodeWie kann ich das gleiche Verhalten wie Dictionary.TryGetValue
type MyClass() =
let items = Dictionary<string,int>()
do
items.Add ("one",1)
items.Add ("two",2)
items.Add ("three",3)
member this.TryGetValue (key,value) =
items.TrygetValue (key,value)
let c = MyClass()
let d = Dictionary<string,int>()
d.Add ("one",1)
d.Add ("two",2)
d.Add ("three",3)
und den folgenden Testcode
let r1,v1 = d.TryGetValue "one"
let r2,v2 = c.TryGetValue "one"
Die r1, arbeitet v1 Linie in Ordnung. Die r2, v2 Linienbomben; beschweren c.TryGetValue muss ein Tupel gegeben werden. Interessanterweise ist die Signatur von TryGetValue in jeder Zeile anders. Wie kann ich erreichen, dass meine benutzerdefinierte Implementierung dasselbe Verhalten wie die BCL-Version aufweist? Oder anders gefragt, da F # (implizit) das Konzept von Tuple-Parametern, Curry-Parametern und BCL-Parametern hat und ich zwischen Curry- und Tupel-Stil unterscheiden kann, wie kann ich den dritten Stil erzwingen (a la BCL-Methoden))
Lassen Sie mich wissen, wenn dies unklar ist.
Dank. Ich habe das tatsächlich ausprobiert, wusste aber nicht, dass ich das OutAttribute brauche. Ich nahm an, die Byref <'v> wäre genug. – pblasucci
byref selbst ist wie 'ref' in C# (im Gegensatz zu C# 'out'). – Brian
ah, ja: ref, out ... gib mir einfach Tupel jeden Tag! – pblasucci