当前位置:  开发笔记 > 编程语言 > 正文

课堂助手有什么好处?

如何解决《课堂助手有什么好处?》经验,为你挑选了3个好方法。

Delphi(可能还有许多其他语言)都有类助手.这些提供了一种向现有类添加额外方法的方法.没有做一个子类.

那么,班主任的好用途是什么?



1> gabr..:

我正在使用它们:

要插入普查员进入一个没有实现他们VCL类.

为了增强 VCL类.

要向TStrings类添加方法,以便在派生列表和TStringList中使用相同的方法.

TGpStringListHelper = class helper for TStringList
public
  function  Last: string;
  function  Contains(const s: string): boolean;
  function  FetchObject(const s: string): TObject;
  procedure Sort;
  procedure Remove(const s: string);
end; { TGpStringListHelper }

简化对记录字段的访问并删除强制转换.



2> Toon Krijthe..:

起初,我对课堂助手持怀疑态度.但后来我读了一篇有趣的博客文章,现在我确信它们确实很有用.

例如,如果您想要现有实例类的额外功能,并且由于某种原因您无法更改现有源.您可以创建一个类助手来添加此功能.

例:

type
  TStringsHelper = class helper for TStrings
  public
    function IsEmpty: Boolean;
  end;

function TStringsHelper.IsEmpty: Boolean;
begin
  Result := Count = 0;
end;

每次,我们现在使用TStrings的(子类)的实例,并且TStringsHelper在范围内.我们可以访问方法IsEmpty.

例:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Memo1.Lines.IsEmpty then
    Button1.Caption := 'Empty'
  else
    Button1.Caption := 'Filled';
end;

笔记:

类助手可以存储在一个单独的单元中,因此您可以添加自己的漂亮的类助手.请务必为这些单位提供一个易于记忆的名称,例如ClassesHelpers,用于Classes单元的帮助程序.

还有记录助手.

如果范围内有多个类助手,可能会遇到一些问题,只能使用一个助手.


您是否阅读过评论:"类帮助程序的最大问题是,在您自己的应用程序中使用它们的pov是,任何时候只有给定类的一个类助手可能在范围内." ......"也就是说,如果你在范围内有两个助手,编译器只能识别一个.你不会得到任何警告,甚至暗示任何其他可能被隐藏的助手."

3> Jon Skeet..:

这听起来非常像C#3(和VB9)中的扩展方法.我见过的最好的用法是对IEnumerable(和IQueryable)的扩展,它允许LINQ对任意序列起作用:

var query = someOriginalSequence.Where(person => person.Age > 18)
                                .OrderBy(person => person.Name)
                                .Select(person => person.Job);

(或者其他什么,当然).所有这一切都是可行的,因为扩展方法允许您有效地将对静态方法的调用链接在一起,这些方法采用与返回时相同的类型.


@NickHodges您是否也申请了多个助手一次无法激活的专利权?
作为旁注,自2000年以来,德尔福一直有班主任,我们就这个概念持有专利.Nick Hodges Delphi产品经理Embarcadero Technologies
推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有