是否可以为不同的参数计数定义同名运算符?是否可以为不同的参数计数定义同名运算符?
如果有可能那么如何?
比如我想:
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