所以,给定下面的代码
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)
以及下面的测试代码
let r1,v1 = d.TryGetValue "one"
let r2,v2 = c.TryGetValue "one"
r1,v1 行工作正常。r2,v2 线炸弹;抱怨 c.TryGetValue 必须被赋予一个元组。有趣的是,在每一行中,TryGetValue 的签名都是不同的。如何让我的自定义实现表现出与 BCL 版本相同的行为?或者,换一种方式问,既然F#(隐含)有元组参数、柯里化参数和BCL参数的概念,而且我知道如何区分柯里化和元组样式,我该如何强制第三种样式(a la BCL方法)?
如果不清楚,请告诉我。