f# - 如何使用 Fsharp 中的 GetEnumerator 从 seq 中获取 seq?

标签 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

最佳答案

您需要使用类型System.Collections.Generic.IEnumerator<'T> ,而不是 System.Collections.IEnumerator 。后者基本上是 C# 1.0 黑暗时代的残余,当时 .NET 中不存在泛型,因此它不知道元素的类型。

关于f# - 如何使用 Fsharp 中的 GetEnumerator 从 seq 中获取 seq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27293658/

相关文章:

recursion - 为什么在 F# 中使用递归函数而不是 `while true do`?

linux - 如何将 curl -w 输出(由 xargs 调用)放到单独的行上?

scala - 在 Scala 中决定使用 Foldleft() 还是 Seq.newBuilder

F# - 我可以从函数返回一个可区分的联合吗

python - 有没有办法将 F# 方法传递给 Python 函数?

c# - F# 中是否有 C# 和 VB 兼容的 System.Void*? (关闭指向非托管 Alloc 的指针?)

f# - 如何使用 tryPick 获取序列的第一个元素?

scala - Scala 中的 F# seq monad 相当于什么

scala - 如何高效/优雅地提取连续整数的范围?

f# - FSI 对程序集保持独占锁定