我正在寻找一个答案来质疑Get next N 个元素 from enumerable没有找到任何令人满意的东西并自己酿造。我想出的是
IEnumerable<T> Chunk<T, R>(IEnumerable<R> src, int n, Func<IEnumerable<R>, T> action){
IEnumerable<R> head;
IEnumerable<R> tail = src;
while (tail.Any())
{
head = tail.Take(n);
tail = tail.Skip(n);
yield return action(head);
}
}
不过,我真正想要的是让 action 具有默认值t=>t
,但我不知道如何将其设为默认参数。签名IEnumerable<T> Chunk<T, R>(IEnumerable<R> src, int n, Func<IEnumerable<R>, T> action = t=>t)
给出了语法错误。
我的问题是,我该怎么做?
我想这与将lambda 函数指定为默认参数但用于 C# 而不是 C++相同
作为旁注,我知道它在语法上没有任何区别,但是如果我切换T
and会更容易阅读R
吗?