F#中的自定义前缀运算符再次出现

时间:2015-11-25 19:27:09

标签: f# operator-overloading

无论我阅读过多少次这篇文章:F#: What are the valid prefix operators?

我和F#编译器从不同意什么是自定义前缀(或中缀)运算符名称。

在上面的帖子中,它说“+”可以是中缀和前缀运算符,但是这个:

let (+@) a = a + 20
+@ 30 |> printfn "%d"

给出错误“无效的前缀运算符”。

为什么?

1 个答案:

答案 0 :(得分:3)

如果您在所提供的链接中查看Brian的回答,您会发现+@中未列出运算符prefix-op。要用作前缀运算符,运算符+应该由~作为前缀:

let (~+) a = a + 20
+ 30 |> printfn "%d"

结果:

  

50