Quindi, data poi seguente codiceCome posso implementare lo stesso comportamento di 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)
E il seguente codice di prova
let r1,v1 = d.TryGetValue "one"
let r2,v2 = c.TryGetValue "one"
R1, linea v1 funziona bene. Le bombe r2, v2 line; lamentando c.TryGetValue deve essere data una tupla. È interessante notare che in ogni riga la firma di TryGetValue è diversa. Come posso ottenere che la mia implementazione personalizzata mostri lo stesso comportamento della versione BCL? O, chiesto in un altro modo, poiché F # ha (implicitamente) il concetto di parametri di tupla, parametri curried e parametri BCL, e so come distinguere tra stile curried e tuple, come posso forzare il terzo stile (a metodi la BCL))?
Fammi sapere se questo non è chiaro.
Grazie. In realtà l'ho provato, ma non avevo capito che avevo bisogno di OutAttribute. Ho pensato che il suffisso <'v> sarebbe stato sufficiente. – pblasucci
byref di per sé è come 'ref' in C# (in contrapposizione a C# 'out'). – Brian
ah, sì: ref, out ... dammi solo tuple ogni giorno! – pblasucci