数値の回数だけ処理を行うIntegerのレコードヘルパー

数値.Times(繰り返し行いたい処理)

と書いたら、「繰り返し行いたい処理」を数値の回数だけ実行します。

たとえば、次のコードを実行すると、0から9までの数字が出力されます。

var
  N: Integer;
begin
  N := 10;

  N.Times(
    // N回繰り返す
    procedure(I: Integer)
    begin
      WriteLn(I);
    end);

上の処理を実現するレコードヘルパーは次のようになります。

type
  TIntegerHelper = record helper for Integer
    procedure Times(Proc: TProc<Integer>);
  end;

{ TIntegerHelper }

procedure TIntegerHelper.Times(Proc: TProc<Integer>);
var
  I: Integer;
begin
  for I := 0 to Self - 1 do
  begin
    Proc(I);
  end;
end;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です