F#for循环错误

时间:2014-09-18 13:53:58

标签: for-loop f# type-mismatch

我正在玩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。这似乎是一个非常简单的问题,但我只能弄清楚发生了什么。

1 个答案:

答案 0 :(得分:5)

此处的错误与循环本身无关。您使用main作为值,但它应该是函数,从字符串数组到int

[<EntryPoint>]
let main args =
    // Your stuff here
    0

其中args将被推断为string[]。 如果你感觉很啰嗦,你可以拼写出来:

[<EntryPoint>]
let main (args : string[]) =
    // Your stuff here
    0

其他一切都很好。