2

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

如果有可能,那怎么办?

例如我想要:

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

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

4

1 回答 1

2

这对于 let 绑定是不可能的

来自MSDN

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

但是,您可以使用 static member (+)重载版本(相同的 MSDN 页面

特别是,这有效:

> type t() =                   
-  static member (+) (a, b) = 1
-  static member (+) a = 5;;   
于 2013-02-18T05:11:55.157 回答