Я пишу несколько расширений для имитации карты и сокращения функций в Lisp.Общие карты/Сократить список расширений в C#
public delegate R ReduceFunction<T,R>(T t, R previous);
public delegate void TransformFunction<T>(T t, params object[] args);
public static R Reduce<T,R>(this List<T> list, ReduceFunction<T,R> r, R initial)
{
var aggregate = initial;
foreach(var t in list)
aggregate = r(t,aggregate);
return aggregate;
}
public static void Transform<T>(this List<T> list, TransformFunction<T> f, params object [] args)
{
foreach(var t in list)
f(t,args);
}
Преобразование функция позволит сократить хлама, как:
foreach(var t in list)
if(conditions && moreconditions)
//do work etc
ли это смысл? Может быть, лучше?
Это уже существует. Взгляните на C# 3/LINQ. – yfeldblum 2008-11-10 16:16:58