デフォルトパラメータの例です。
例 その1
function MyFunc(i: Integer = 10): Integer; begin Result := i; end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin i := MyFunc(); // 引数省略 ShowMessage(IntToStr(i)); i := MyFunc(33); // 引数を指定 ShowMessage(IntToStr(i)); end;
例 その2です。
function MyFunc(i: Integer; j: Integer = 5): Integer; begin Result := i + j; end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin i := MyFunc(4, 6); // 引数を指定 ShowMessage(IntToStr(i)); i := MyFunc(2); // 引数省略 ShowMessage(IntToStr(i)); end;
このように、引数にデフォルト値を設定した場合、使う側で引数を省略すると、デフォルト値が使われます。また、デフォルトパラメータを使うにあたって、注意しなければならないことがあります。
// このように書くことは出来ません! function MyFunc(i, j: Integer = 3): Integer; begin Result := i + j; end;
上の例のように、まとめてデフォルトパラメータを指定することは出来ません。これは、以下のように書かなければなりません。
function MyFunc(i: Integer = 3; j: Integer = 3): Integer; begin Result := i + j; end;
次に注意しなければならない点は、デフォルトパラメータを指定したら、その値の後ろ(右)にある引数は必ずデフォルト値を指定しなければなりません。中身は簡単です。
// これは間違いです! function MyFunc(i: Integer; j: Integer = 5; k: Integer): Integer; begin Result := i + j + k; end;
j には、デフォルト値を指定していますので、この後に続く引数には必ずデフォルト値を指定しなければなりません。なので、この場合、kは必ずデフォルト値を指定しなければなりません。
// デフォルトパラメータの後ろは必ずデフォルトパラメータです function MyFunc(i: Integer; j: Integer = 5; k: Integer = 2): Integer; begin Result := i * j * k; end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin i := MyFunc(4, 6, 3); ShowMessage(IntToStr(i)); i := MyFunc(2, 2); ShowMessage(IntToStr(i)); i := MyFunc(1); ShowMessage(IntToStr(i)); end;