함수 선언

함수 선언은 리턴 타입과 리턴 값을 지정하는 것을 제외하면 프로시저 선언과 비슷합니다.
함수 선언의 구조는 다음과 같습니다.

1.png

여기서, functionName은 유효한 식별자이고, returnType은 타입 식별자이며,
statements는 함수가 호출될 때 실행되는 일련의 문장이며, parameterList, directives,
localDeclarations는 옵션입니다.
함수의 문장 블럭에는 프로시저에 적용되는 것과 같은 규칙이 적용됩니다. 문장 블럭에서 함
수의 localDeclarations 부분에서 선언된 변수와 다른 식별자, 파라미터 리스트의 파라미터
이름, 그리고 함수 선언이 속하는 유효 범위(scope) 내의 모든 식별자를 사용할 수 있습니다.
확장 문법이 활성화된 상태에서는({$X+}), 모든 함수에서 Result가 암시적으로 선언됩니
다. Result를 다시 선언하려고 하지 마십시오. 예를 들면,

2.png

위 코드는 파라미터가 없고 항상 정수값 17을 리턴하는 WF라는 상수 함수를 정의합니다.
이 선언은 다음과 동일합니다.

3.png

다음과 같이 더 복잡한 함수 선언도 있습니다.

4.png

값의 타입이 선언된 리턴 타입과 일치하기만 하면, 문장 블럭 내에서 Result 혹은 함수 이름
에 값을 여러 번 대입할 수 있습니다. 함수의 실행이 종료되면 Result 혹은 함수 이름에 마
지막으로 대입된 값이 그 함수의 리턴값이 됩니다. 다음은 함수 내에서 리턴 값을 다루는 예
입니다.

5.png

Result와 함수 이름은 항상 같은 값입니다. 따라서,

6.png

위 코드는 값 11을 리턴합니다. 그러나 Result가 완전히 함수 이름으로 대체 가능한 것은
아닙니다. 함수 이름이 대입문의 왼쪽에 나타나면 컴파일러는 함수 이름이 Result처럼 리턴
값을 기록하는 데 사용되고 있다고 이해합니다. 그러나 함수 이름이 문장 블럭의 다른 곳에
서 나타나면 컴파일러는 함수 이름을 그 함수 자체의 재귀 호출로 해석합니다. 한편, Result
는 연산, 타입 캐스트, 집합 생성자, 인덱스, 다른 루틴 호출 등에서 변수처럼 사용될 수 있
습니다.
Result나 함수 이름에 값을 지정하지 않은 상태로 함수의 실행이 종료되면 그 함수의 리턴
값은 정의되지 않습니다.

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15503
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13974
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16509
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22068
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23289
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18934
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39279
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174737
230 [델파이 문법] 문법 요소 #3 file 관리자 2012.10.16 7173
» [델파이 문법] 프로시저와 함수 #2 file 관리자 2012.07.27 7161
228 [델파이 문법 시리즈] #2. 익명메소드 - 활용, 바인딩 file 관리자 2012.04.05 7149
227 [델파이 문법 시리즈] #3. 제네릭 - 선언 file 관리자 2012.03.26 7117
226 [델파이 문법 시리즈] #3. 익명메소드 - 이벤트 활용,변수 바인딩 메커니즘 file 관리자 2012.04.09 7033
225 [델파이 문법] 데이터 타입, 변수 및 상수 #1 관리자 2012.12.25 6981
224 [델파이 문법] 프로시저와 함수 #10 file 관리자 2012.08.23 6963
223 [델파이 문법] 클래스와 객체 #11 file 관리자 2012.05.31 6960
222 [XE3] VCL 이나 FireMonkey 폼을 Metropolis UI로 컨버팅하는 1분 동영상 관리자 2012.09.12 6917
221 [델파이 문법] 프로시저와 함수 #9 file 관리자 2012.08.20 6907
220 [델파이 문법 시리즈] #6. 제네릭 - 제약조건 file 관리자 2012.03.29 6899
219 [델파이 문법] 클래스와 객체 #12 file 관리자 2012.06.04 6880
218 [델파이 문법] 문법 요소 #4 file 관리자 2012.10.19 6853
217 [델파이 문법] 클래스와 객체 #9 file 관리자 2012.05.16 6808
216 [델파이 문법 시리즈] #4. 제네릭 - 타입(기반,클래스,인터페이스,레코드,프로시저) file 관리자 2012.03.27 6749
215 [델파이 문법 시리즈] #5. 제네릭 - 메소드(파라미터,오버로드,타입 호환성) file 관리자 2012.03.28 6739
214 [델파이 문법] 데이터 타입, 변수 및 상수 #3 file 관리자 2013.02.13 6738
213 [델파이 문법] 클래스와 객체 #21 file 관리자 2012.07.13 6730
212 델파이 XE 컨버전 가이드 (첨부파일) file 관리자 2012.06.21 6669
211 바코드 스캐너 기능 구현하기(iOS, Android) [2] 험프리 2015.01.14 6597