Vì vậy, được đưa ra sau đó mã sauLàm thế nào tôi có thể thực hiện hành vi tương tự như 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)
Và mã kiểm tra sau
let r1,v1 = d.TryGetValue "one"
let r2,v2 = c.TryGetValue "one"
Các r1, dòng v1 hoạt động tốt. Các dòng bom r2, v2; phàn nàn c.TryGetValue phải được đưa ra một tuple. Thật thú vị, trong mỗi dòng chữ ký của TryGetValue là khác nhau. Làm thế nào tôi có thể thực hiện tùy chỉnh của mình để thể hiện hành vi tương tự như phiên bản BCL? Hoặc, hỏi một cách khác, vì F # có (ngầm định) khái niệm tham số tuple, tham số curried, và tham số BCL, và tôi biết cách phân biệt giữa kiểu curried và tuple, làm thế nào tôi có thể ép kiểu thứ ba (a la BCL method)?
Hãy cho tôi biết nếu điều này không rõ ràng.
Cảm ơn. Tôi thực sự đã thử điều đó, nhưng không nhận ra tôi cần OutAttribute. Tôi giả định byref <'v> sẽ là đủ. – pblasucci
byref tự nó giống như 'ref' trong C# (trái với C# 'out'). – Brian
ah, vâng: ref, out ... cứ cho tôi một tuples bất cứ ngày nào! – pblasucci