Delphi [델파이 문법] 프로시저와 함수 #2
2012.07.27 02:37
함수 선언
함수 선언은 리턴 타입과 리턴 값을 지정하는 것을 제외하면 프로시저 선언과 비슷합니다.
함수 선언의 구조는 다음과 같습니다.
![1.png](http://tech.devgear.co.kr/files/attach/images/108/502/007/fa41047538bcece7251fb433da04e137.png)
여기서, functionName은 유효한 식별자이고, returnType은 타입 식별자이며,
statements는 함수가 호출될 때 실행되는 일련의 문장이며, parameterList, directives,
localDeclarations는 옵션입니다.
함수의 문장 블럭에는 프로시저에 적용되는 것과 같은 규칙이 적용됩니다. 문장 블럭에서 함
수의 localDeclarations 부분에서 선언된 변수와 다른 식별자, 파라미터 리스트의 파라미터
이름, 그리고 함수 선언이 속하는 유효 범위(scope) 내의 모든 식별자를 사용할 수 있습니다.
확장 문법이 활성화된 상태에서는({$X+}), 모든 함수에서 Result가 암시적으로 선언됩니
다. Result를 다시 선언하려고 하지 마십시오. 예를 들면,
![2.png](http://tech.devgear.co.kr/files/attach/images/108/502/007/ec19a37b545a3a602f276d10b2d48062.png)
위 코드는 파라미터가 없고 항상 정수값 17을 리턴하는 WF라는 상수 함수를 정의합니다.
이 선언은 다음과 동일합니다.
다음과 같이 더 복잡한 함수 선언도 있습니다.
![3.png](http://tech.devgear.co.kr/files/attach/images/108/502/007/170fe22ac060e308a187bf9f35482332.png)
다음과 같이 더 복잡한 함수 선언도 있습니다.
![4.png](http://tech.devgear.co.kr/files/attach/images/108/502/007/ee40f26d1f1964dc12e76ec9456de50f.png)
값의 타입이 선언된 리턴 타입과 일치하기만 하면, 문장 블럭 내에서 Result 혹은 함수 이름
에 값을 여러 번 대입할 수 있습니다. 함수의 실행이 종료되면 Result 혹은 함수 이름에 마
지막으로 대입된 값이 그 함수의 리턴값이 됩니다. 다음은 함수 내에서 리턴 값을 다루는 예
입니다.
Result와 함수 이름은 항상 같은 값입니다. 따라서,
![5.png](http://tech.devgear.co.kr/files/attach/images/108/502/007/2a75fb3be35ae2deccb533b01061402d.png)
Result와 함수 이름은 항상 같은 값입니다. 따라서,
![6.png](http://tech.devgear.co.kr/files/attach/images/108/502/007/53f71173caedcfe492540eaac49a60e8.png)
위 코드는 값 11을 리턴합니다. 그러나 Result가 완전히 함수 이름으로 대체 가능한 것은
아닙니다. 함수 이름이 대입문의 왼쪽에 나타나면 컴파일러는 함수 이름이 Result처럼 리턴
값을 기록하는 데 사용되고 있다고 이해합니다. 그러나 함수 이름이 문장 블럭의 다른 곳에
서 나타나면 컴파일러는 함수 이름을 그 함수 자체의 재귀 호출로 해석합니다. 한편, Result
는 연산, 타입 캐스트, 집합 생성자, 인덱스, 다른 루틴 호출 등에서 변수처럼 사용될 수 있
습니다.
Result나 함수 이름에 값을 지정하지 않은 상태로 함수의 실행이 종료되면 그 함수의 리턴
값은 정의되지 않습니다.