【发布时间】:2015-11-25 19:27:09
【问题描述】:
不管我看了多少遍这篇文章:F#: What are the valid prefix operators?
我和 F# 编译器从不会就自定义前缀(或中缀)运算符名称达成一致。
在上面的帖子中它说“+”可以是中缀和前缀运算符,但是:
let (+@) a = a + 20
+@ 30 |> printfn "%d"
给出错误“无效的前缀运算符”。
为什么?
【问题讨论】:
-
有左和右关联运算符。和 in-,pre-,post-fix 运算符。规则很简单。如果您在午夜之前创建一个运算符,它是左关联的,午夜之后它是右关联的。如果你是人类它是中缀,对于狼人它是前缀,而吸血鬼只创建后缀。但是AB+血型的吸血鬼也和人类一样是中缀。在满月时创建运算符的狼人也是中缀,但满月时的人类是前缀。在一个月的第 13 个星期五,所有运算符都是 postfix。吸血鬼不能使用“~”。这就是我理解 F# 中的运算符定义的方式。