익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
콜백 함수
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
콜백 함수(Callback Function, 영어: callback function)는 다른 함수의 인자로 전달되어, 특정 이벤트나 작업이 완료되었을 때 호출되는 함수를 의미한다. 이 개념은 비동기 프로그래밍, 이벤트 기반 프로그래밍 및 함수형 프로그래밍에서 널리 활용되며, 프로그램의 흐름 제어와 코드의 재사용성을 높이는 데 기여한다. ==개요== 콜백 함수는 보통 익명 함수(anonymous function) 형태로 정의되거나, 이름이 있는 함수로 구현되며, 다른 함수의 인자로 전달되어 필요 시점에 실행된다. 이를 통해 프로그램은 작업을 요청한 후, 결과가 준비되었을 때 자동으로 후속 처리를 수행할 수 있다. 예를 들어, 네트워크 요청, 파일 I/O, 타이머 이벤트 등의 비동기 작업에서 결과 처리 로직을 콜백 함수로 구현할 수 있다. ==정의 및 등록== 콜백 함수를 사용하기 위해서는 먼저 함수를 정의한 후, 이를 다른 함수의 인자로 전달하여 등록해야 한다. 등록된 콜백 함수는 호출되는 시점에 특정 작업의 결과를 처리하거나, 추가 작업을 수행하도록 설계된다. 이 방식은 코드의 간결성을 높이고, 함수형 프로그래밍 패러다임에서 고차 함수와 결합되어 데이터를 변환하거나 처리하는 데 유용하다. ==특징 및 활용== *간결성 **람다 함수와 같이 짧은 구문으로 간단한 작업을 처리할 수 있다. *비동기 처리 지원 **네트워크 요청이나 파일 I/O 등 비동기 작업 완료 후 자동 호출되어, 이벤트 기반 프로그래밍을 가능하게 한다. *고차 함수와의 결합 **map, filter, reduce 등의 함수형 프로그래밍 함수와 함께 사용되어, 데이터 집합에 대한 반복적 처리를 간단하게 구현할 수 있다. *재사용성 및 모듈화 **한 번 정의된 콜백 함수는 여러 함수의 인자로 전달되어 다양한 작업에서 재사용할 수 있다. ==예제== 아래는 파이썬과 자바스크립트에서 콜백 함수를 정의하고 등록하여 사용하는 예제이다. ===파이썬 예제=== <syntaxhighlight lang="python"> def fetch_data(callback): # 데이터 처리나 비동기 작업 시뮬레이션 data = "결과 데이터" # 작업 완료 후 콜백 함수 호출 callback(data) def process_data(result): print("받은 데이터:", result) # fetch_data 함수에 process_data 함수를 콜백으로 등록하여 호출 fetch_data(process_data) </syntaxhighlight> ===자바스크립트 예제=== <syntaxhighlight lang="javascript"> function fetchData(callback) { // 비동기 작업 시뮬레이션: 1초 후에 콜백 함수 호출 setTimeout(function() { var data = "결과 데이터"; callback(data); }, 1000); } function processData(result) { console.log("받은 데이터:", result); } // fetchData 함수에 processData 함수를 콜백으로 전달하여 호출 fetchData(processData); </syntaxhighlight> ==역사 및 배경== 콜백 함수의 개념은 수학의 람다 대수(lambda calculus)에서 기원을 찾으며, 함수형 프로그래밍 언어에서 핵심적인 역할을 담당해 왔다. 현대 프로그래밍 언어는 콜백 함수를 통해 비동기 및 이벤트 기반 프로그래밍을 효과적으로 지원하며, 코드의 재사용성과 모듈화를 향상시키고 있다. ==같이 보기== *[[익명 함수]] *[[함수형 프로그래밍]] *[[람다 함수]] *[[고차 함수]] *[[비동기 프로그래밍]] ==참고 문헌== *Abelson, H., and Sussman, G. J. (1996). Structure and Interpretation of Computer Programs. MIT Press. *Bird, R., and Wadler, P. (1988). Introduction to Functional Programming. Prentice Hall. *Odersky, M., Spoon, L., and Venners, B. (2010). Programming in Scala. Artima Inc. [[분류:프로그래밍]]
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록