是否可以为不同的参数计数定义同名运算符?

时间:2013-02-18 04:24:53

标签: syntax f# operators

是否可以为不同的参数计数定义同名运算符?

如果可能的话怎么样?

例如我想:

let (-) x y = x - y
let (-) x  = -x

可悲的是,我不能只调用-x,我需要( - )x来使用它,但这是另一个与主要问题无关的子问题。

1 个答案:

答案 0 :(得分:2)

使用let bindings

是不可能的

来自MSDN

  

您可以通过这种方式重新定义常规算术运算符   因为F#的范围规则决定了新定义的运算符   优先于内置运算符。

但是,您可以使用static member (+)版本进行重载(Same MSDN page

特别是,这有效:

> type t() =                   
-  static member (+) (a, b) = 1
-  static member (+) a = 5;;