For loop F#for循环错误

For loop F#for循环错误,for-loop,f#,type-mismatch,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)

我在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

经过一番尝试后,我怀疑错误来自for循环。但我无法理解它为什么需要字符串[]->int。这似乎是一个非常简单的问题,但我只能知道发生了什么。

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

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

其他一切都很好。

谢谢,成功了。这是否意味着F#不允许入口点没有输入参数。基本上,在F#:
publicstaticvoidmain()
?@mashrur中,这是可能的。我很确定您无法做到这一点。入口点函数签名就是这样:)@mashrur参数总是存在的,但是你当然可以忽略它们:
let main=…
@mashrur类似于
public static int main(){return 0;}
的语法应该是
let main()=0
。如果尝试将
args
替换为
()
,则会出现一个编译器错误,表明F#中不允许此操作:“此表达式应具有类型字符串[],但此处具有类型单位”
[<EntryPoint>]
let main args =
    // Your stuff here
    0
[<EntryPoint>]
let main (args : string[]) =
    // Your stuff here
    0