2013-02-18 50 views
2

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

如果有可能那么如何?

比如我想:

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

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

+1

你要找的是 '超载',在这个词,你想知道你是否可以在F#中重载运算符。 (我不知道F#,所以我不能回答这个部分,对不起 - 但也许谷歌搜索'超载F#'将工作?) – Joe 2013-02-18 04:46:26

回答

2

这是不可能的,let绑定

MSDN

您可以重新定义普通的算术运算符以这种方式 因为F#决定了新定义的运营商 优先于作用域规则内置的运营商。

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

特别是,这个工程:

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

可悲的是,这不是我真正需要的。我需要在模块级别重载自己的(自定义)操作符。 – Cynede 2013-02-18 05:42:10

+0

根据此答案打开新问题:http://stackoverflow.com/questions/14930385/how-to-declare-global-level-overload-able-operators – Cynede 2013-02-18 06:04:14

+0

_some_操作符是可能的。看到我对新问题的回答:http://stackoverflow.com/questions/14930385/how-to-declare-global-level-overload-able-operators#14931062 – 2013-02-18 07:19:45

相关问题