我正在玩F#并注意到一个我无法理解的问题。假设我想从用户那里获得一系列整数输入并将其存储在一个数组中:
[<EntryPoint>]
let main =
let n = Console.ReadLine() |> int
let inputVals = Array.zeroCreate n
for i in 0 .. n - 1 do
inputVals.[i] <- (Console.ReadLine() |> int)
printf "%A\n" inputVals
0 //compiler error here. The type does not match the expected type
但这会产生错误
This expression was expected to have type string [] -> int but here has type int
经过一些游戏,我怀疑错误来自for循环。但我无法弄清楚为什么它需要一个字符串[] - &gt; INT。这似乎是一个非常简单的问题,但我只能弄清楚发生了什么。
答案 0 :(得分:5)
此处的错误与循环本身无关。您使用main
作为值,但它应该是函数,从字符串数组到int
。
[<EntryPoint>]
let main args =
// Your stuff here
0
其中args
将被推断为string[]
。
如果你感觉很啰嗦,你可以拼写出来:
[<EntryPoint>]
let main (args : string[]) =
// Your stuff here
0
其他一切都很好。