再次在 F# 中自定义前缀运算符
Custom prefix operators in F# once again
无论我读了多少遍post:F#: What are the valid prefix operators?
我和 F# 编译器从未就什么是自定义前缀(或中缀)运算符名称达成一致。
上面post说“+”既可以是中缀运算符也可以是前缀运算符,但是这个:
let (+@) a = a + 20
+@ 30 |> printfn "%d"
给出错误 "Invalid prefix operator"。
为什么?
如果您查看 Brian 在您提供的 link 中的回答,您会发现运算符 +@
未列在 prefix-op
中。并且要用作 prefix 运算符,运算符 +
应该以 ~
:
作为前缀
let (~+) a = a + 20
+ 30 |> printfn "%d"
结果:
50
无论我读了多少遍post:F#: What are the valid prefix operators?
我和 F# 编译器从未就什么是自定义前缀(或中缀)运算符名称达成一致。
上面post说“+”既可以是中缀运算符也可以是前缀运算符,但是这个:
let (+@) a = a + 20
+@ 30 |> printfn "%d"
给出错误 "Invalid prefix operator"。
为什么?
如果您查看 Brian 在您提供的 link 中的回答,您会发现运算符 +@
未列在 prefix-op
中。并且要用作 prefix 运算符,运算符 +
应该以 ~
:
let (~+) a = a + 20
+ 30 |> printfn "%d"
结果:
50