【发布时间】:2014-05-11 11:59:59
【问题描述】:
我目前有这个功能:
let equal x1 x2 = abs(x1 - x2) < tolerance
检查是否有一定的公差,因为我们正在检查浮点数,所以它们不会完全相等。
我怎样才能使它成为浮点数上的二进制中缀运算符,例如 x ~= y?
我试过了:
type System.Double with
static member (~-) (this, that: System.Double) =
equal this that
然后它说我扩展方法不能提供运算符重载
然后我尝试从 System.Double 继承并做同样的事情:
type double() =
inherit System.Double()
static member (==) (this, that: double) =
equal this that
但它抱怨我不能从“密封”类型继承
然后,您将如何使用此运算符重载定义一个 double 类型,它的作用类似于普通 System.Double(F# 中的“float”)但使用此运算符重载方法?
【问题讨论】: