F#解析命令行参数

F#解析命令行参数,f#,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 , excelForm

我需要从命令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
[]
let main(args)=
printfn“args:%A”args。[0]
设xmlP=args[0]
设excelFormatP=args。[1]
设excelP=args[2]
printfn“%A”(functionParseXmlToExcel(xmlP,excelFormatP,excelP))|>忽略
0
我知道我需要解析参数(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

我强烈建议大家仔细阅读——斯科特正确地称之为“F的工作马”#“

您需要确定您传递了多少个参数,以及您实际如何解析它们,然后您调用的函数期望如何接收它们。因此,最好也显示
functionParseXmlToExcel
的函数签名。下面是一个非常简单的示例:

let myExcelFunction(param1,param2,param3) =
    printfn "%A" param1
    printfn "%A" param2
    printfn "%A" param3


[<EntryPoint>]
let main argv = 
    printfn "%A" argv

    let parseParams (argv:string []) =
        let param1,param2,param3 = argv.[0],argv.[1],argv.[2]
        myExcelFunction(param1,param2,param3)

    match argv.Length with
        | 3 -> parseParams argv |> ignore
        | _ ->  failwith "You need to pass three parameters!" 
    0 // return an integer exit code
let myexcelf函数(param1、param2、param3)=
printfn“%A”参数1
printfn“%A”参数2
printfn“%A”参数3
[]
让主argv=
printfn“%A”argv
让parseParams(argv:string[])解析=
设param1,param2,param3=argv[0],argv[1],argv[2]
myExcelFunction(参数1、参数2、参数3)
将argv.Length与
|3->解析参数argv |>忽略
|->failwith“您需要传递三个参数!”
0//返回整数退出代码

要获得更完整的解决方案,您可能需要进行调查。

您得到的错误是什么?谢谢:未处理的异常:System.IndexOutOfRangeException:索引超出了数组的边界。。。(-cmd中的错误)这就像从石头上取血:错误发生在哪一行,您是如何运行代码的?-如果您没有给我们足够的信息来查看问题,我们如何解决它?除了不匹配之外“使用伪
函数ParseXmlToExcel
我没有得到任何错误。请阅读此内容,并在问题中提供足够的信息,以重新创建错误。请将您的附加信息添加回问题,作为编辑,阅读评论很困难。