-1

考虑这个例子:

 Memo1.Clear;
 Memo1.Add(S);
 Memo1.SaveToFile(F);

如果它是在 JavaScript 中,我们可以这样做:

 Memo1.Clear.Add(S).SaveToFile(F);  

如何编写自己的 Delphi 类来支持这样的链接方法调用?我希望能够编写这样的代码:

 MyFileClass.Create('File.txt').OpenForWrite().Add('Test');
4

2 回答 2

11

如果您愿意,您可以轻松设计自己的类来支持流畅的风格。

type
  TMyClass = class
  public
    function Foo: TMyClass;
    function Bar: TMyClass;
  end;

procedure TMyClass.Foo: TMyClass;
begin
  // do something
  Result := Self;
end;

var
  obj: TMyClass;

....
obj.Foo.Bar;

对于很多类型来说,流利的风格是不合适的,所以不要觉得你必须到处使用它。但是,对于某些类型,它可能很有意义。

于 2013-05-23T20:11:00.227 回答
3

不能代表 xe3,但我的旧 Delphi5 可以这样做:

type
  TMyClass = class
  public
    function Foo: Any;
    function Bar: Other;
    function Baz: Tipes;
  end;

var
  obj: TMyClass;

with obj do begin Foo; Bar; Baz; end;

或者:

with obj do begin
  Foo;
  Bar;
  Baz;
end;

不一样,但对于更多的属性/方法非常有用。

于 2013-05-23T21:09:14.117 回答