10

所有文档版本,包括最新版本,都提供了以下类/记录帮助器语法:

type
   identifierName = class|record helper [(ancestor list)] for TypeIdentifierName
     memberList
   end;

它只解释了什么......

祖先列表是可选的。只能为类助手指定。

......并没有进一步讨论可怕的细节。文档主题的其余部分中的使用示例仅利用了ancestor list可选的事实。我见过的所有EMBA的代码以及所有的第三方代码都没有使用这ancestor list部分。

因此,标题中概述了我的问题:

  • ancestor list类助手语法的目的是什么?
  • 它记录在哪里?
  • 有没有使用示例?
4

1 回答 1

12

它允许继承助手:

{$APPTYPE CONSOLE}

type
  TObjectHelper = class helper for TObject
    procedure Foo;
  end;

  TObjectHelperAgain = class helper(TObjectHelper) for TObject
    procedure Bar;
  end;

procedure TObjectHelper.Foo;
begin
  Writeln('Foo');
end;

procedure TObjectHelperAgain.Bar;
begin
  Writeln('Bar');
end;

begin
  with TObject.Create do
  begin
    Foo;
    Bar;
  end;
end.

这是解决在任何特定代码位置只能有一个助手活动的限制的一种方法。

据我所知,没有祖先列表的文档。

于 2014-09-20T16:32:11.103 回答