当你想要一个一个接一个地按顺序参与时,有没有其他人觉得迭代器会变短?
也许我应该开始在F#中编写我的代码(顺便说一下,如果有人知道F#是否使用了懒惰的评估),但我发现自己想要一种以非常独特的方式拉动序列的方法.
例如
// string.Split implemented as a generator,with lazy evaluation var it = "a,b,c".GetSplit(',').GetEnumerator(); it.MoveNext(); var a = it.Current; it.MoveNext(); it.MoveNext(); var c = it.Current;
这有效,但我不喜欢它,它很难看.我可以这样做吗?
var it = "a,'); string a; var c = it.Yield(out a).Skip(1).First();
那更好.但我想知道是否有另一种推广相同语义的方法,也许这已经足够了.通常我正在进行一些嵌入式字符串解析,就在这时就会弹出.
还有一种情况,我希望消耗一个特定点的序列,然后基本上,叉它(或克隆它,这是更好的).像这样
var s = "abc"; IEnumerable<string> a; var b = s.Skip(1).Fork(out a); var s2 = new string(a.ToArray()); // "bc" var s3 = new string(b.ToArray()); // "bc"
最后一个,起初可能不是那么有用,我发现它很方便地解决了回溯问题.
我的问题是我们需要这个吗?或者它是否已经以某种方式存在而我错过了它?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。