F#的格式文档

mat*_*att 2 format f# visual-studio-2010

我想格式化文档:给它缩进和类似的东西.

Ctrl KCtrl D/FVisual Studio中的+ 不适用于F#,是否有任何解决方法?它适用于C#虽然......

编辑:我想做的是从外部源复制粘贴一些代码.我通常使用Ctrl K+ Ctrl D来格式化它,它适用于C#.但是,在.fs文件中,它似乎不起作用.最重要的是,缩进似乎是F#的必备条件......

Tom*_*cek 7

F#是缩进敏感的,因此如果您将有效代码从一个位置复制到另一个位置,您可能需要做的唯一事情就是确保它从左侧有正确的偏移量.例如,假设你有:

let test () = 
  printfn "Hello world" // (*)

let another () = 
  for i in 0 .. 10 do
    test()              // (#)
  printfn "finished"
Run Code Online (Sandbox Code Playgroud)

现在,如果您想复制该行(*)并使用它而不是调用test,只需复制和粘贴就可以将您的代码转换为以下内容:

let another () = 
  for i in 0 .. 10 do
  printfn "Hello world" // (*)
  printfn "finished"
Run Code Online (Sandbox Code Playgroud)

这有不同的含义!它重复两次printfn线条10次.所以,你想要得到的是:

let another () = 
  for i in 0 .. 10 do
    printfn "Hello world" // (*)
  printfn "finished"
Run Code Online (Sandbox Code Playgroud)

在Visual Studio中执行复制和粘贴以保持代码含义相同的方法是像往常一样粘贴复制的代码(Ctrl+ V),然后在仍然选择代码时更正缩进.要缩进代码进一步使用Tab和缩进它使用Shift+ Tab.

这样,您可以使用复制和粘贴F#代码就好了.您无需重新格式化整个块,因为复制到其他位置的有效F#代码将自动格式化.你只需要修复缩进.

关于#light注释中提到的模式 - 在早期版本的F#中,可以使用其他关键字和分号而不是缩进敏感模式.调用了现代缩进敏感样式#light,但它现在是默认样式,您无需担心遗留样式.