Get next N elements 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)
で構文エラーが発生します。
私の質問は、どうすればいいですか?
これはラムダ関数をデフォルト引数として指定するのと同じだと思いますが、C++ ではなく C# の場合です。
補足として、構文上の違いはないことはわかっていますが、切り替えた場合は読みやすくなりT
ますR
か?