这两个概念其实并不新鲜。我们今天就把它们整理出来。
匿名函数
匿名函数是没有函数名的函数。个人对匿名函数的理解可以在一定程度上提高代码的可重用性。的具体使用方式如下(DelphiXE10.x环境)
类型
{使用引用定义匿名方法类型}
TFun=对函数的引用(num : Integer): Integer;
//整个函数作为参数传递。
函数Demo1(Age:整数):整数;
开始
Writeln(年龄);
结果:=年龄;
结束;
//将函数作为对象传递。
函数Demo2(num1,num2: Integerfun: TFun):整数;
开始
结果:=fun(num 1 num 2);
结束;
定义变量
NumResult
开始
NumResult :=Demo2(10,20,
函数(num:整数):整数
开始
结果:=num
结束);
writeln(NumResult);
//第二条路
Writeln(Demo2(1,2,demo 1));
Readln
结束。
00-1010委托实际上只是一个函数指针类型。因为里面没有指针。NET中,有委托的概念。在Delphi和C中,实际上是函数指针类型。Delphi还可以支持成员函数指针类型。
下面的代码实现了接口的委托实现。如果你在玩一个功能,理论上是相通的,只需要换对应的类型。
类型
{吃饭界面}
IEat=接口
procedure HaiTing();
结束;
{狗需要实现接口并在其中重写抽象函数}
TDog=class(TInterfacedObject,IEat)
procedure HaiTing();
结束;
{猫本来应该在IEat接口实现抽象方法,但是它没有实现,而是委托给了狗}
TCat=class(TInterfacedObject,IEat)
私人的
FEat: IEat
公众的
{这句话是核心,即以这种方式展示的委托}
属性Eat: IEat读取FEat写入FEat实现IEat;
结束;
程序TDog。吃饭;
开始
Writeln('狗吃');
结束;
定义变量
Cat: TCat
开始
Cat :=TCat。create();
//必须在这里给Eat字段赋值,否则为空。
//同时可以理解为真正实现吃饭的小中心。
猫。Eat :=TDog。create();
猫。吃饭。
Readln
结束。