-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 に答える