在循环中分配值发布导致错误

时间:2015-11-22 18:48:19

标签: f#

我正在努力弄清楚为什么会收到以下错误:

  

阻止这样做'让'尚未完成。期待一个表达。

    let hashset = System.Collections.Generic.HashSet<int>()
    let mutable continueLooping = true

    while (continueLooping) do 
        let value = System.Random().Next(0, 12)
        let success = hashset.Add(value)
        continueLooping <- hashset.Count <> 12
    let z = hashet

错误基于以下行:

let z = hashset

为什么我收到此错误?

注:

我是F#的新手。结果,请原谅我的无知。

1 个答案:

答案 0 :(得分:2)

据我所知,只是因为你在那里混合了标签和空格 - 如果我在FSharpInteractive中对它进行评估,这种方法就有用了:

let hashset = System.Collections.Generic.HashSet<int>()
let mutable continueLooping = true

while (continueLooping) do 
   let value = System.Random().Next(0, 12)
   let success = hashset.Add(value)
   continueLooping <- hashset.Count <> 12

let z = hashset

评估为

val hashset : System.Collections.Generic.HashSet<int>
val mutable continueLooping : bool = false
val z : System.Collections.Generic.HashSet<int>

然后z |> Seq.toArray评估为

val it : int [] = [|2; 8; 9; 3; 4; 10; 5; 11; 0; 6; 1; 7|]

看起来很好

btw:因为你有一个小错字:... z = hashet而不是hashset我认为你没有复制和粘贴导致你的错误的代码。