我试图从我简化的示例中吸取以下行为的教训:
let groupedEnum (input: 'a seq) =
using (input.GetEnumerator()) (fun en ->
Seq.unfold(fun _ ->
if en.MoveNext() then
Some(en.Current, ())
else None) ()
)
//WORKS
let c = groupedEnum ("11111122334569999" |> List.ofSeq ) |> List.ofSeq
//BOOM !! System.NullReferenceException
let c = groupedEnum ("11111122334569999" ) |> List.ofSeq
枚举数“en”是否独立于被捕获而被处理?(我想是的,但是在资源库上的这个 msdn 文档旁边,有什么要说的/要阅读的关于这种行为的材料)
如果先将序列转换为列表,为什么它会起作用?
编辑:这只是一个说明行为的玩具示例,请勿遵循。直接操作枚举数的充分理由很少。