延迟评估对于处理无法一次性放入主内存的大文件是一个很大的好处。但是,假设序列中有一些我想立即评估的元素,而其余的可以懒惰地计算——有什么方法可以指定吗?
具体问题:(如果有助于回答问题)
具体来说,我使用一系列 IEnumerables 作为多个序列的迭代器——这些序列是从使用 BinaryReader 流打开的文件中读取的数据(每个序列负责从其中一个文件中读取数据)。这些上的 MoveNext() 将按特定顺序调用。例如。iter0
然后iter1
然后iter5
....iter3
等等。此顺序在另一个序列index
=中指定{0,1,5,3,....}
。然而序列是惰性的,评估自然只在需要时进行。因此,文件读取(对于从磁盘上文件读取的开头的序列)发生在序列的 IEnumerables 移动时。这导致非法文件访问 - 一个进程正在读取的文件再次被访问(根据错误消息)。
诚然,非法文件访问可能是出于其他原因,在尽我最大努力调试其他原因之后,可能值得一试。