StartprogrammingusingObjectPascal:DefaultValueParameters
인자의 기본값
프로시저와 함수에서 사용하는 인자에 기본 값을 지정할 수 있습니다. 이 경우 이들 인자에 값을 넘기는 것을 무시할 수 있으며, 값을 넘기지 않는경우 기본값을 사용하게 됩니다.
다음 예제를 보도록 합니다.
program defaultparam;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
function SumAll(a, b: Integer; c: Integer = 0;
d: Integer = 0): Integer;
begin
result:= a + b + c + d;
end;
begin
Writeln(SumAll(1, 2));
Writeln(SumAll(1, 2, 3));
Writeln(SumAll(1, 2, 3, 4));
Write('Press enter key to close');
Readln;
end.
이 예제에서 처음에는 두 개의 값을, 두번째는 세 개의 값을, 세번째는 네 개의 값을 사용하여 SumAll 함수를 세 번 호출했습니다. a와 b는 필수적인 인자이며, 기본값이 없기 때문에 모든 경우에 대해 값을 전달해야 합니다.
왼쪽부터 오른쪽으로 기본 인자 값의 전달을 무시할 수 있는데, 예를 들어 c에 대한 값 전달을 무시하려 한다면, d 에 대한 값을 보내지는 않을 것입니다.
기본 인자는 오른쪽으로부터 왼쪽으로 시작해야 합니다. 다음 예제처럼 기본 인자 다음에 기본값이 없는 인자를 선언할 수는 없습니다.
function ErrorParameters(a: Integer; b: Integer = 10; c: Integer; x: string);
가장 중요한 인자는 함수나 프로시저의 머리 부분 왼쪽에 놓고, 덜 중요한 것(무시할 수 있는 것)은 함수나 프로시저의 오른쪽에 놓습니다.