我试图用元组来创建一个在F#中定义的类的新实例。为了复制这个问题,我尝试了下面的代码。F#构造函数不接受元组?
type test(x: int, y:int) =
let distance =
x * x + y * y |> float |> sqrt
new (x: int, y:int, z:int) =
new test(x, y)
let args = 1, 2
let test2 = new test(args)
它抱怨
错误1构件或物体 构造 '测试' 不采取1个 参数(一个或多个)。发现一个超载 需要2个参数。
如果我删除非默认的构造函数,事情没有问题。 我不明白为什么它变成2/3参数而不是元组。
非常感谢。
我并不感到惊讶,因为编译器没有处理构造或参数作为一个元组,但是我很惊讶你不能在构造函数绑定中使用模式,即'type Test((x,y))= ...'(或任何其他模式)。这有什么理由吗? –
好问题,我不知道。 – Brian
非常感谢。 F#在某些方面确实令人困惑。 – LLS