下面是我在克里斯·史密斯(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 []是一个字符串数组。所以我不理解我的错误。
答案 0 :(得分:5)
string[]
确实是一个字符串数组,但是["asd", "fgf"]
不是-这是一个列表,这就是为什么会出现此错误的原因。
要创建数组,请使用[|"asd"; "fgf"|]
(请注意,在列表和数组中,;
都用作分隔符-,
创建元组)。
此外,在标记为EntryPoint
的函数之后,您将没有代码。而且即使可以,调用该函数也没有意义,因为已经使用命令行参数自动调用了该函数-这就是EntryPoint
属性的重点。