F#的Main中的args []

时间:2018-12-16 20:54:31

标签: f#

下面是我在克里斯·史密斯(Chris Smith)写的《编程F#》一书中尝试的F#代码:

(*
Mega Hello World:
Take two command line parameters and then print
them along with the current time to the console.
*)
open System
[<EntryPoint>]
let main (args : string[]) =
    if args.Length <> 2 then
        failwith "Error: Expected arguments <greeting> and <thing>"
    let greeting, thing = args.[0], args.[1]
    let timeOfDay = DateTime.Now.ToString("hh:mm tt")
    printfn "%s, %s at %s" greeting thing timeOfDay
    // Program exit code
    0
main(["asd","fgf"]) |> ignore

main中有一个错误,提示:该表达式原本应为'String []'类型,但这里的类型为“ a list'。但是string []是一个字符串数组。所以我不理解我的错误。

1 个答案:

答案 0 :(得分:5)

string[]确实是一个字符串数组,但是["asd", "fgf"]不是-这是一个列表,这就是为什么会出现此错误的原因。

要创建数组,请使用[|"asd"; "fgf"|](请注意,在列表和数组中,;都用作分隔符-,创建元组)。

此外,在标记为EntryPoint的函数之后,您将没有代码。而且即使可以,调用该函数也没有意义,因为已经使用命令行参数自动调用了该函数-这就是EntryPoint属性的重点。