考虑这个例子:
Memo1.Clear;
Memo1.Add(S);
Memo1.SaveToFile(F);
如果它是在 JavaScript 中,我们可以这样做:
Memo1.Clear.Add(S).SaveToFile(F);
如何编写自己的 Delphi 类来支持这样的链接方法调用?我希望能够编写这样的代码:
MyFileClass.Create('File.txt').OpenForWrite().Add('Test');
考虑这个例子:
Memo1.Clear;
Memo1.Add(S);
Memo1.SaveToFile(F);
如果它是在 JavaScript 中,我们可以这样做:
Memo1.Clear.Add(S).SaveToFile(F);
如何编写自己的 Delphi 类来支持这样的链接方法调用?我希望能够编写这样的代码:
MyFileClass.Create('File.txt').OpenForWrite().Add('Test');
如果您愿意,您可以轻松设计自己的类来支持流畅的风格。
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;
对于很多类型来说,流利的风格是不合适的,所以不要觉得你必须到处使用它。但是,对于某些类型,它可能很有意义。
不能代表 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;
不一样,但对于更多的属性/方法非常有用。