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