【发布时间】:2019-02-27 05:22:44
【问题描述】:
假设我有一个简单的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:元组实例化中的逗号后面应该跟一个空格。
我的问题:
- 我很困惑。将元组包装成多行不好吗?
- 如果没有,如何让 lint 闭嘴?
- 如果答案是肯定的,那么当我们有十个节点时如何提高可读性?
【问题讨论】:
-
由于这是唯一的应该提示,我会说忽略它,但是能够在突出显示时禁用此特定建议可能会很有用。你在 VS 的 F# 交互中试过吗?也许这个问题更多是关于在各种产品中的一致突出,而不是实际的“最佳实践”问题。
-
@MarkusDeibel 这是否意味着可以以这种方式换行成多行?我之所以问这个问题是因为我在网上遇到了一个问题,即 OP 使用了缩进和
{},这不被视为最佳实践,然后遇到了意外错误。作为一个新手,F# 中的缩进和空格让我很困惑。 -
[更新]:似乎今天运行相同的代码没有任何不必要的“建议”(
Ionide(v3.37.0))
标签: f# visual-studio-code ionide