正常函数类型的对象需在外部实现,单reference to可以在函数内实现,有子函数的效果。具体代码示例如下:
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TYDForm = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TYDForm = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
YDForm: TYDForm;
YDForm: TYDForm;
implementation
{$R *.dfm}
Type
TFun = function: string;
TReferenceFun = reference to function: string;
TFun = function: string;
TReferenceFun = reference to function: string;
function TestFun: string;
begin
Result := '函数类型对象用法';
end;
begin
Result := '函数类型对象用法';
end;
procedure TYDForm.FormCreate(Sender: TObject);
var
Fun: TFun;
RFun: TReferenceFun;
str: Integer;
begin
RFun := function: string
begin
Result := '匿名函数reference用法';
end;
ShowMessage(RFun);
var
Fun: TFun;
RFun: TReferenceFun;
str: Integer;
begin
RFun := function: string
begin
Result := '匿名函数reference用法';
end;
ShowMessage(RFun);
Fun := TestFun;
ShowMessage(Fun);
end;
ShowMessage(Fun);
end;
end.