F#:将元组包装成多行
F# : wrap tuples into multiple lines
假设我有一个简单的 Tree
:
type Tree =
| BinaryNode of Tree * int * Tree
| Tip
member this.Sum =
match this with
| Tip -> 0
| BinaryNode(left, value, right) -> left.Sum + value + right.Sum
我通过 :
定义了一棵树
let tree = BinaryNode( BinaryNode( Tip, 2, Tip ), 1, BinaryNode( Tip, 3, Tip ))
但我认为如果我们有一个包含多个节点的树,它真的很难阅读。所以我将它包装成多行如下:
[<EntryPoint>]
let main argv =
let tree =
BinaryNode(
BinaryNode( Tip, 2, Tip ),
1,
BinaryNode( Tip, 3, Tip )
)
printf "%A" (tree.Sum)
0
以上代码在 Visual Studio
中按预期工作。但是当我将 Visual Studio Code
与 Ionide
一起使用时,它提醒我:
Lint: Comma in tuple instantiation should be followed by single space.
我的问题:
- 我很困惑。把元组包成多行不好吗?
- 如果没有,如何让 lint 闭嘴?
- 如果答案是肯定的,当我们有十个节点时如何提高可读性?
它认为这样做不一定不好。好吧,我希望不会,因为我一直都这样做。特别是在这种情况下,否则行会太宽,阅读起来会很不愉快。
据我所知,Ionide 使用 FSharpLint。根据 the docs,可以在项目级别禁用单个警告,方法是在项目文件夹中放置一个名为 Settings.FSharpLint
的 XML 文件,并使用所需的配置。
我认为,在您的情况下,该文件应该包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<FSharpLintSettings>
<Analysers>
<TupleCommaSpacing>
<Enabled>false</Enabled>
</TupleCommaSpacing>
</Analysers>
</FSharpLintSettings>
假设我有一个简单的 Tree
:
type Tree =
| BinaryNode of Tree * int * Tree
| Tip
member this.Sum =
match this with
| Tip -> 0
| BinaryNode(left, value, right) -> left.Sum + value + right.Sum
我通过 :
定义了一棵树let tree = BinaryNode( BinaryNode( Tip, 2, Tip ), 1, BinaryNode( Tip, 3, Tip ))
但我认为如果我们有一个包含多个节点的树,它真的很难阅读。所以我将它包装成多行如下:
[<EntryPoint>]
let main argv =
let tree =
BinaryNode(
BinaryNode( Tip, 2, Tip ),
1,
BinaryNode( Tip, 3, Tip )
)
printf "%A" (tree.Sum)
0
以上代码在 Visual Studio
中按预期工作。但是当我将 Visual Studio Code
与 Ionide
一起使用时,它提醒我:
Lint: Comma in tuple instantiation should be followed by single space.
我的问题:
- 我很困惑。把元组包成多行不好吗?
- 如果没有,如何让 lint 闭嘴?
- 如果答案是肯定的,当我们有十个节点时如何提高可读性?
它认为这样做不一定不好。好吧,我希望不会,因为我一直都这样做。特别是在这种情况下,否则行会太宽,阅读起来会很不愉快。
据我所知,Ionide 使用 FSharpLint。根据 the docs,可以在项目级别禁用单个警告,方法是在项目文件夹中放置一个名为 Settings.FSharpLint
的 XML 文件,并使用所需的配置。
我认为,在您的情况下,该文件应该包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<FSharpLintSettings>
<Analysers>
<TupleCommaSpacing>
<Enabled>false</Enabled>
</TupleCommaSpacing>
</Analysers>
</FSharpLintSettings>