F#数组总和无法打印

时间:2017-08-07 22:30:40

标签: f#

到目前为止,我已经设置了很多东西,但是那个愚蠢的printfn仍然没有用。

open System

[<EntryPoint>]
let main argv = 
    let n = Console.ReadLine() |> int
    let nums = seq { for i in 1..n -> Console.ReadLine() |> int }
    printfn "%d" (Seq.sum nums)
    0

2 个答案:

答案 0 :(得分:2)

Joseph的回答解释了你的代码有什么问题。

如果你想以更F#的方式做这件事,那么你可能想完全消除这种变异。这样做的一个相当不错的方法是使用序列表达式来构建您从控制台读取的所有数字的序列,然后使用Seq.sum来计算总和:

[<EntryPoint>]
let main argv = 
    let n = Console.ReadLine() |> int
    let nums = seq { for i in 1..n -> Console.ReadLine() |> int }
    printfn "%d" (Seq.sum nums)
    0

答案 1 :(得分:1)

我注意到的两件事,你需要用0结束程序,即退出代码。 第二件事是FSharp中的等号不用于更新值,F#使用&lt; - 运算符代替。这是您的程序,其中包含更新的更新。

open System

[<EntryPoint>]
let main argv = 
    let mutable sum = 0
    let n = Console.ReadLine() |> int
    for i in 1..n do
        let mutable r = Console.ReadLine() |> int
        sum <- sum + r;
    printfn "%d" sum
    0