F#解析命令行参数

MRa*_*Rah -4 f#

我需要从命令kine(cmd)获取3个参数我写了以下内容并得到一个错误:

[<EntryPoint>]
let main(args) = 

   printfn "args: %A" args.[0]
   let xmlP = args.[0]
   let excelFormatP = args.[1]
   let excelP = args.[2]

   printfn "%A" (functionParseXmlToExcel(xmlP , excelFormatP , excelP)) |> ignore

   0
Run Code Online (Sandbox Code Playgroud)

我知道我需要解析参数(3个字符串).

当我尝试从命令行运行3个文件时我得到的错误:索引超出了数组的范围...

有人可以帮我吗?

谢谢

Ant*_*fer 7

从您粘贴的命令行看起来,您似乎忘记在命令行上的第二个和第三个路径之间添加一个空格 - 您有两个""紧挨着彼此.您还应该注意到,在打印出第一个参数时args.[0],您会看到两个路径连接在一起"

至于使代码更健壮:无论语言是什么,访问数组元素而不首先检查数组的长度是一个坏主意.通过数组模式匹配,F#为您提供了一次完成长度检查和元素访问的好方法:

match args with
| [| xmlP; excelFormatP; excelP |] ->
    let result = functionParseXmlToExcel(xmlP , excelFormatP , excelP)
    printfn "Completed with %A" result
    0
| _ -> 
    failwithf "Expected 3 commandline arguments, but got %i arguments" args.Length
Run Code Online (Sandbox Code Playgroud)

我强烈建议你阅读一般的模式匹配 --Scott正确地称它为"F#的主力".