我可以做这个:
let foo = bar
|> baz
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我收到语法错误:
let foo = bar
<| baz
Run Code Online (Sandbox Code Playgroud)
为什么?
当我定义自己的中缀运算符并尝试以这种方式使用它时,我也会遇到语法错误.
除非我遗漏了某些内容,否则两个运算符(以及任何其他中缀运算符)的行为相同.当我定义bar
并baz
使用您的示例时,我在两种情况下都会出错.F#中的off-side规则允许您在距离左侧较远的位置缩进运算符,但参数列必须匹配:
let bar = 1
let baz x = x + 1
let foo1 = bar
|> baz
let foo2 = baz
<| bar
Run Code Online (Sandbox Code Playgroud)
这两个都给出了一条错误消息:
let foo1 = bar
|> baz
let foo2 = baz
<| bar
Run Code Online (Sandbox Code Playgroud)
(虽然您可能只看到第一个错误,因为F#编译器在语法错误后停止报告其他错误 - 可能是因为它无法保证它们是合理的)
这些规则在MSDN上的代码格式指南中有很好的描述.
归档时间: |
|
查看次数: |
145 次 |
最近记录: |