implementation
type
Add = function(I : Integer):Integer; //声明一个方法类型,真心觉得delphi中的类型太多太多了,需要学习的路还很长.
//--------------------------------------------------------------------------------------------------------------------
function Addx(I : Integer): Integer; //声明一个和上面方法类型相同参数的函数。
begin
Result := I * 2;
end;
function AddS(I : Integer;Fun : Add):Integer; //以方法类型作为参数
begin
Result := I + Fun(I);
ShowMessage(IntToStr(Result));
end;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
IncX : Add; // 声明方法类型的变量。
I : Integer;
begin
IncX := Addx; //让这个方法类型指向和它相同参数的变量、
I := IncX(4); //现在操作这个IncX就等于操作Add。他们已经具备相同的功能;
ShowMessage(IntToStr(I)); // 结果是8
end;
procedure TForm1.Button1Click(Sender: TObject);
var
IncX : Add;
begin
IncX := Addx;
//回调函数的实现
AddS(2,IncX); //结果 = 6 因为 2 + 2*2 =6
end;
end.