我如何在Fsharp中使用GetEnumerator获取seq中的seq?

时间:2014-12-04 12:04:08

标签: f# seq

对于我的项目,我想提取seq>的seq。为此我想我可以使用GetEnumerator。之后我想比较头部(当前元素的Seq.head),如果它包含我选择的元素。问题是,如果我使用.Current它会给我回obj而不是seq。我做错了什么?

let convertElements (input:seq<seq<Elements>>) =
    let en = input.GetEnumerator()
    let rec loop (en:System.Collections.IEnumerator) =
        match en.MoveNext() with
            | true  -> match (Seq.head en.Current) with
                        |AElement(_) -> createNewA andSoOn
                        |_    -> ()
            | false -> ()    
    loop en

1 个答案:

答案 0 :(得分:5)

您需要使用System.Collections.Generic.IEnumerator<'T>类型,而不是System.Collections.IEnumerator。后者基本上是C#1.0黑暗时代的遗留物,当.NET中没有泛型时,所以它不知道你的元素的类型。