2013-02-18 51 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

相關問題