我需要从命令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个文件时我得到的错误:索引超出了数组的范围...
有人可以帮我吗?
谢谢
从您粘贴的命令行看起来,您似乎忘记在命令行上的第二个和第三个路径之间添加一个空格 - 您有两个""紧挨着彼此.您还应该注意到,在打印出第一个参数时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#的主力".