是否可以为不同的参数计数定义同名运算符?
如果有可能,那怎么办?
例如我想要:
let (-) x y = x - y
let (-) x = -x
遗憾的是,我不能只调用 -x,我需要 (-)x 才能使用它,但这是另一个与主要问题无关的子问题。
这对于 let 绑定是不可能的
来自MSDN
您可以通过这种方式重新定义常规算术运算符,因为 F# 的范围规则规定新定义的运算符优先于内置运算符。
但是,您可以使用 static member (+)
重载版本(相同的 MSDN 页面)
特别是,这有效:
> type t() =
- static member (+) (a, b) = 1
- static member (+) a = 5;;