2

以下代码在每个let(“可能不正确的缩进”)上触发格式警告:

module UtilTests =
    [<Test>] let simpleWithNth ()= true |> should be True
    [<Test>] let negIndex () = true |> should be True
    [<Test>] let tooBigIndex () = true |> should be True
    [<Test>] let lastIndex () = true |> should be True

以下没有:

module UtilTests =
    [<Test>] let simpleWithNth ()= true |> should be True
     [<Test>] let negIndex () = true |> should be True
      [<Test>] let tooBigIndex () = true |> should be True
       [<Test>] let lastIndex () = true |> should be True

为什么它希望每个let都比它上面的缩进更多?(有没有办法让 Visual Studio 2012 自动格式化?)

4

1 回答 1

5

正如Brian在评论中所说,将属性应用于let函数的通常方法是将属性写在let绑定之前的行上。我还希望您编写的代码能够工作,因为函数的主体在同一行,但显然,编译器不这么认为......

但是,还有另一种方法可以将属性应用于let在您的示例中运行良好的函数:

module UtilTests = 
  let [<Test>] simpleWithNth ()= true |> should be True 
  let [<Test>] negIndex () = true |> should be True 
  let [<Test>] tooBigIndex () = true |> should be True 
  let [<Test>] lastIndex () = true |> should be True 

如果您正在编写递归函数,则需要这种样式 - 然后前几行的属性不起作用,您需要编写let rec [<Foo>] foo () = ... and [<Bar>] bar () = ....

于 2012-06-03T11:21:23.013 回答