gpt4 book ai didi

f# - f# 中的缩进错误?

转载 作者:行者123 更新时间:2023-12-02 05:53:46 25 4
gpt4 key购买 nike

考虑以下代码:

let fn () =
let b =
8. // any expression
-b

let fn2 () =
let b =
8. // any expression
- b

“fn”编译而“fn2”不编译(注意“b”前面的空格)。错误信息是:

Block following this 'let' is unfinished. Expect an expression.

这是为什么?

最佳答案

F# 允许各种类型的“取消缩进”,您可以在其中使用较小的缩进,但仍保持在相同的表达式中。

其中一个合法的“取消”是针对运营商的。你可以写

    foo
|> bar
|> baz

    foo
|> bar
|> baz

甚至

    foo
|> bar
|> baz

和中缀运算符在后续行中继续相同的表达式。规则是您可以“取消缩进”“中缀运算符的长度加一个空格”,目的是让您可以对齐正在使用的值。一个常见的情况就像一个数字表,比如

let x = 
42
+ 21
+ 62

允许 42 以下的行以两个空格的较小缩进开始,以便下一个数字与前一个数字对齐。

所以无论如何,这条规则在这里生效,没有空格,“二进制减号”优先于“一元减号”,然后中缀取消缩进规则生效。

关于f# - f# 中的缩进错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5621467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com