数値.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;