gpt4 book ai didi

f# - 将一条语句(表达式)分成多行: how to indent

转载 作者:行者123 更新时间:2023-12-04 06:47:36 25 4
gpt4 key购买 nike

我发现很难在F#中搜索简单的缩进指南。
基本上,我想知道多行语句缩进的规则是什么。
在C#中,没有问题,因为空格不计算在内。
尽管我可以根据自己的直觉来编写F#代码,并且可以正常工作,但我真的很想知道将一条语句分成多行的规则。
我写为

printfn "%d"
1

它按预期工作

如果我将它们写在同一列中,则会出问题。
>
printfn "%A%A"
1
[];;
> //nothing is returned... and no error in this case

我想确认执行此操作的基本规则。当您不确定自己在做什么时,这会有些烦人。

提前致谢

我刚尝试过另一种情况
List.iter
(printfn "%d")
[1..10];;

并打印出1到10。
为什么不是
List.iter
((printfn "%d")
[1..10]);;

最佳答案

正如Yin所指出的,规则是,函数的参数应缩进,而不是对函数的调用。要添加更多详细信息,第一个代码段的解释如下:

printfn "%A%A";
1;
[];

每个表达式都是一个有效的表达式,该表达式返回某些内容(函数,数字,空列表),然后忽略结果并继续。因为它们是在顶级范围内编写的,所以F#Interactive不会发出警告,提示您忽略了某些值。如果它们在 do块或 let声明中:
do
printfn "%A%A"
1
[]

当对不返回 ;的表达式(使用 unit)进行排序时,F#编译器将发出警告:

stdin(5,3): warning FS0193: This expression is a function value, i.e. is missing arguments. Its type is 'a -> 'b -> unit.

stdin(6,3): warning FS0020: This expression should have type 'unit', but has typ e 'int'. Use 'ignore' to discard the result of the expression, or 'let' to bind the result to a name.

stdin(5,3): warning FS0020: This expression should have type 'unit', but has typ e ''a list'. Use 'ignore' to discard the result of the expression, or 'let' to b ind the result to a name.

关于f# - 将一条语句(表达式)分成多行: how to indent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5771235/

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