C#中的高阶函数介绍
介绍
我们都知道函数是程序中的基本模块,代码段。那高阶函数呢?听起来很好理解吧,就是函数的高阶(级)版本。它怎么高阶了呢?我们来看下它的基本定义:
1:函数自身接受一个或多个函数作为输入
2:函数自身能输出一个函数。 //函数生产函数
满足其中一个就可以称为高阶函数。高阶函数在函数式编程中大量应用。c#在3.0推出Lambda表达式后,也开始慢慢使用了。
目录
1:接受函数
2:输出函数
3:Currying(科里化)
一、接受函数
为了方便理解,都用了自定义。
代码中TakeWhileSelf能接受一个函数,可称为高阶函数。
//自定义委托 publicdelegateTResultFunction<inT,outTResult>(Targ);
//定义扩展方法 publicstaticclassExtensionByIEnumerable { publicstaticIEnumerable<TSource>TakeWhileSelf<TSource>(thisIEnumerable<TSource>source,Function<TSource,bool>predicate) { foreach(TSourceiteratorVariable0insource) { if(!predicate(iteratorVariable0)) { break; } yieldreturniteratorVariable0; } } } classProgram { //定义个委托
staticvoidMain(string[]args) { List<int>myAry=newList<int>{1,2,3,4,5,6,7,8,9,0};
Function<int,bool>predicate=(num)=>num<4; //定义一个函数
IEnumerable<int>q2=myAry.TakeWhileSelf(predicate); //
foreach(variteminq2) { Console.WriteLine(item); } /* *output: *1 *2 *3 */ } }