是否可以为不同的参数计数定义同名运算符?
如果可能的话怎么样?
例如我想:
let (-) x y = x - y
let (-) x = -x
可悲的是,我不能只调用-x,我需要( - )x来使用它,但这是另一个与主要问题无关的子问题。
答案 0 :(得分:2)
使用let bindings
是不可能的来自MSDN
您可以通过这种方式重新定义常规算术运算符 因为F#的范围规则决定了新定义的运算符 优先于内置运算符。
但是,您可以使用static member (+)
版本进行重载(Same MSDN page)
特别是,这有效:
> type t() =
- static member (+) (a, b) = 1
- static member (+) a = 5;;