Warm tip: This article is reproduced from serverfault.com, please click

其他-在F#中使用明确的数据类型创建新的运算符

(其他 - Create new operator in F# with explicit datatype)

发布于 2020-12-02 11:08:40

有没有一种方法可以显式定义我定义的新运算符的元素?

我已经检查过该文档,但找不到它:https : //docs.microsoft.com/zh-cn/dotnet/fsharp/language-reference/operator-overloading#creating-new-operators

假设我已经定义了以下xor运算符:

let (^@) a b =
    a <> b

let result = true ^@ false

它可以正常工作,但是以下定义没有...

let (@^) (a: bool, b:bool) : bool =
    a <> b

在此处输入图片说明

Questioner
blfuentes
Viewed
1
CaringDev 2020-12-02 19:41:47

@^参数中有元组。你的操作员需要两个参数。如果指定

let (@^) (a: bool) (b: bool) : bool =
    a <> b

然后

true @^ false // true