是否可以爲不同的參數計數定義同名運算符?是否可以爲不同的參數計數定義同名運算符?
如果有可能那麼如何?
比如我想:
let (-) x y = x - y
let (-) x = -x
可悲的是我不能打電話只是-x,我需要( - )X使用它,但它的另一個子問題,這與主要問題無關。
是否可以爲不同的參數計數定義同名運算符?是否可以爲不同的參數計數定義同名運算符?
如果有可能那麼如何?
比如我想:
let (-) x y = x - y
let (-) x = -x
可悲的是我不能打電話只是-x,我需要( - )X使用它,但它的另一個子問題,這與主要問題無關。
這是不可能的,let綁定
從MSDN
您可以重新定義普通的算術運算符以這種方式 因爲F#決定了新定義的運營商 優先於作用域規則內置的運營商。
但是,您可以使用static member (+)
版本超載(Same MSDN page)
特別是,這個工程:
> type t() =
- static member (+) (a, b) = 1
- static member (+) a = 5;;
可悲的是,這不是我真正需要的。我需要在模塊級別重載自己的(自定義)操作符。 – Cynede 2013-02-18 05:42:10
根據此答案打開新問題:http://stackoverflow.com/questions/14930385/how-to-declare-global-level-overload-able-operators – Cynede 2013-02-18 06:04:14
_some_操作符是可能的。看到我對新問題的回答:http://stackoverflow.com/questions/14930385/how-to-declare-global-level-overload-able-operators#14931062 – 2013-02-18 07:19:45
你要找的是 '超載',在這個詞,你想知道你是否可以在F#中重載運算符。 (我不知道F#,所以我不能回答這個部分,對不起 - 但也許谷歌搜索'超載F#'將工作?) – Joe 2013-02-18 04:46:26