我试图用f#来打破基础但是坚持下去。如果你有一般提示,将不胜感激。
#light
open System
[<EntryPoint>]
let main (args : string[]) =
match args with
| [| firstName; lastName; city |] ->
printfn "Hi there %s %s from %s" firstName lastName city
0
| _ -> failwith "Usage: HiThere.exe firstName lastName City";;
我收到此错误,
val main : args:string [] -> int
我正在观看有关f#的教程,并试图学习这个功能,但我不明白为什么我能在没有这些错误的情况下做到这一点。
答案 0 :(得分:1)
args.[0], args.[1]. args.[2]
中有一个非常小的拼写错误。您在第二个和第三个元素之间有一个.
而不是,
- 它应该是args.[0], args.[1], args.[2]
。
编译器仍然能够解析它,但它将您的代码解释为:
args.[0], (args.[1].args.[2])
这在语法上是一个双元素元组,你将它分配给一个三元素元组,所以你首先得到关于元组的错误。之后它会失败,因为args
不是args.[1]
的成员,但这是一个单独的消息(编译器忽略它,因为它报告了它之前找到的消息)。
作为旁注,你也可以在数组上使用模式匹配并写:
let main (args : string[]) =
match args with
| [| firstName; lastName; city |] ->
printfn "Hi there %s %s from %s" firstName lastName city
0
| _ -> failwith "Usage: HiThere.exe firstName lastName City"