예를 들어...
function GetNameFromDirLine(Line: String; Var IsDirectory: Boolean; const Status: Boolean): String;
...
...
end;
위에 보면 인자가 다양하게 설정이 되어 있는데요, 어떤건 변수명만 또 어떤건 var를 앞에 적어주고 또 어떤건 const를 붙여줍니다. 근데 이게 어떤 차이인지 모르겠습니다.
보통 변수를 선언할때 var를 사용하고 상수를 설정할 때 const를 사용하는데,
인자에서는 무슨 차이인지 모르겠습니다. 대충 생각을 해보면 const라고 정의를
하면 C에서 처럼 함수내에서는 그 값을 바꾸지 못하게 하고 싶을 때 쓸것 같은데
다른 것들은 도대체 무엇에 쓰는 걸까요...??
궁금합니다.
인자(parameter)
세가지 형식으로 인자를 받을 수 있다.
function GetNameFromDirLine(Line: String; Var IsDirectory: Boolean; const Status: Boolean): String;
1) 일반형
위에보면 Line이라는 인자가 있는데 이것은 GetNameFromDirLine함수에서 사용할
변수(Line)를 정의 해서 값을 저장합니다. 이것은 지역변수입니다.
2) 참조형
위에서 var IsDirectory 가 이에 해당합니다.
C++에서 레퍼런스로 인자를 받아들이는 것과 같습니다.
GetNameFromDirLine에서 IsDirectory변수를 수정하면 원래값도 수정됩니다.
예를 들어
GetNameFromDirLine(Line, DirName, uStatus)
라고 함수를 호출했을 때 IsDirectory의 값을 변경하면 DirName의 값도 변경됩니다.
3) 상수형
Status변수가 이에 해당합니다.
이 변수값은 이 함수내에서는 결코 바꿀 수 없습니다.
장원준 wrote:
> 예를 들어...
>
> function GetNameFromDirLine(Line: String; Var IsDirectory: Boolean; const Status: Boolean): String;
> ...
> ...
> end;
>
> 위에 보면 인자가 다양하게 설정이 되어 있는데요, 어떤건 변수명만 또 어떤건 var를 앞에 적어주고 또 어떤건 const를 붙여줍니다. 근데 이게 어떤 차이인지 모르겠습니다.
>
> 보통 변수를 선언할때 var를 사용하고 상수를 설정할 때 const를 사용하는데,
> 인자에서는 무슨 차이인지 모르겠습니다. 대충 생각을 해보면 const라고 정의를
> 하면 C에서 처럼 함수내에서는 그 값을 바꾸지 못하게 하고 싶을 때 쓸것 같은데
> 다른 것들은 도대체 무엇에 쓰는 걸까요...??
>
> 궁금합니다.