在F#中,以下语句将失败,并显示以下错误
let listx2 = [1..10]
|> List.map(fun x -> x * 2)
|> List.iter (fun x -> printf "%d " x)
Run Code Online (Sandbox Code Playgroud)
这个'let'之后的块未完成.期待一个表达.
绑定中出现意外的中缀操作符.在此点或其他标记之前或之前的预期不完整结构化构造.
但是以下将编译
let listx2 =
[1..10]
|> List.map(fun x -> x * 2)
|> List.iter (fun x -> printf "%d " x)
Run Code Online (Sandbox Code Playgroud)
我也注意到这个编译但有警告
let listx2 = [1..10] |>
List.map(fun x -> x * 2) |>
List.iter (fun x -> printf "%d " x)
Run Code Online (Sandbox Code Playgroud)
可能的错误缩进:此标记在位置(10:18)处开始的上下文越位.尝试进一步缩进此标记或使用标准格式约定.
前两个陈述有什么区别?
当你有
let listx2 = [1..10]
Run Code Online (Sandbox Code Playgroud)
您隐式将下一行的缩进级别设置为与该字符相同的字符[
.对于规范中越位字符的以下规则给出:
在Let或Member上下文中遇到= token后立即执行.
所以在第一个例子中,|>
缩进的次数少于[
你得到的错误,但在第二个例子中它们是相同的,所以一切正常.
我不太确定为什么移动|>
到行的末尾只会发出警告.
归档时间: |
|
查看次数: |
81 次 |
最近记录: |