Здравствуйте, Пельмешко, Вы писали:
П>На F# без проблем:
П>П>let nums = [ 1; 2; 3; 4 ]
П>let sums = nums |> List.scan_left (+) 0 |> List.tl
П>
П>Чем бы заменить scan в Linq...
Реализовать:
public static class ScanExtensions
{
public static IEnumerable<TResult> ScanLeft<T, TResult>(
this IEnumerable<T> items,
Func<TResult, T, TResult> func,
TResult start)
{
TResult accum = start;
foreach(var item in items)
{
accum = func(accum, item);
yield return accum;
}
}
public static IEnumerable<int> ScanLeft(
this IEnumerable<int> items,
int start)
{
return items.ScanLeft((x, accum) => accum + x, start);
}
public static IEnumerable<int> ScanLeft0(
this IEnumerable<int> items)
{
return items.ScanLeft(0);
}
}
И использовать:
var sums = new [] { 1, 2, 3, 4, 5 }.ScanLeft0();
С Уважением, Andir!
using( RSDN@Home 1.2.0 alpha 4 rev. 1233 ) { /* Работаем */ }