帮助实现 ZipWithRatio 扩展方法
我正在尝试找到一种优雅的方式来编写可能称为 MergeWithRatio 或 ZipWithRatio 的扩展方法。
我希望它有这个签名..
public static IEnumerable<T> MergeWithRatio<T>(this IEnumerable<T> source, IEnumerable<T> mergeSequence, int ratio)
{
..
}
首先是示例。
var source = new[]{1,2,3,4,5,6,7,8,9};
var mergeSeq = new[]{100,200};
var result = source.MergeWithRatio(mergeSeq, 3).ToArray();
结果现在包含 [1, 2, 100, 3, 4, 200, 5, 6, 100, 7, 8, 200, 9]
总结: mergeSeq 在完成时循环,并且当“source”为空时停止生成。
如果可能的话,我希望解决方案是惰性的,但这不是必需的。
有什么想法或指示吗?
I'm trying to find a elegant way to write a extention method that might be called MergeWithRatio or ZipWithRatio.
I expect it to have this signature..
public static IEnumerable<T> MergeWithRatio<T>(this IEnumerable<T> source, IEnumerable<T> mergeSequence, int ratio)
{
..
}
Example first.
var source = new[]{1,2,3,4,5,6,7,8,9};
var mergeSeq = new[]{100,200};
var result = source.MergeWithRatio(mergeSeq, 3).ToArray();
result now contains [1, 2, 100, 3, 4, 200, 5, 6, 100, 7, 8, 200, 9]
Summing up:
The mergeSeq is looped when/if finished and the yielding stops when 'source' is empty.
If possible I would prefere if the solution was lazy but it is not a requirement.
Any ideas or pointers?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这将起作用并返回预期的输出:
This would work and returns the expected output:
这是我的实现:
Here is my implementation:
加上对
mergeSequenceEnumerator.MoveNext()
、ratio
输入值`等的一些检查。Plus some checks on
mergeSequenceEnumerator.MoveNext()
,ratio
input value`, etc.