StartprogrammingusingObjectPascal:DefaultValueParameters

From 흡혈양파의 번역工房
Jump to: navigation, search

인자의 기본값

프로시저와 함수에서 사용하는 인자에 기본 값을 지정할 수 있습니다. 이 경우 이들 인자에 값을 넘기는 것을 무시할 수 있으며, 값을 넘기지 않는경우 기본값을 사용하게 됩니다.

다음 예제를 보도록 합니다.

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);


가장 중요한 인자는 함수나 프로시저의 머리 부분 왼쪽에 놓고, 덜 중요한 것(무시할 수 있는 것)은 함수나 프로시저의 오른쪽에 놓습니다.