以下代码会在每个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自动格式化?)
答案 0 :(得分: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 () = ...
。