For loop F#for循环错误
我在F#附近玩耍,发现了一个我无法理解的问题。假设我希望从用户处获取一系列整数输入,并将其存储在数组中: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)
[<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