在F#中重载后增量运算符是不可能的

时间:2014-07-03 19:09:36

标签: f#

我正在为C#开发人员编写一个库。该库是用F#编写的。 C#开发人员希望在其中一个对象上使用++运算符。我怎样才能做到这一点 ?

我在网上查了一下,发现++后增量算子在F#中是不可能的。

1 个答案:

答案 0 :(得分:8)

即使F#没有++运算符,您仍然可以定义支持它的F#类型:

type A(n:int) = 
  member x.N = n
  static member op_Increment (a:A) = A(a.N + 1)

诀窍是你必须使用op_Increment名称作为方法,因为这就是C#用于++运算符的内容。不幸的是,F#不理解运算符,因此如果编写member (++) ...,编译器将调用方法op_PlusPlus