이것은 나쁜 것이 아닙니다. 사실, 그것은 아주 좋은 것입니다.
함수에 함수를 전달하는 것은 프로그래밍에서 매우 중요하므로 람다 함수 를 속기로 발명했습니다 . 예를 들어, C ++ 알고리즘과 함께 람다를 사용 하여 매우 작지만 표현적인 코드를 작성하여 일반 알고리즘이 지역 변수 및 기타 상태를 사용하여 검색 및 정렬과 같은 작업을 수행 할 수 있습니다.
객체 지향 라이브러리 에는 본질적으로 적은 수의 함수를 지정하는 인터페이스 인 콜백 이 있을 수 있습니다 (이상적으로 항상 그런 것은 아니지만). 그런 다음 해당 인터페이스를 구현하고 해당 클래스의 객체를 함수에 전달하는 간단한 클래스를 만들 수 있습니다. 이는 이벤트 중심 프로그래밍 의 초석입니다 . 프레임 워크 수준 코드 (아마도 다른 스레드에서도)는 사용자 작업에 대한 응답으로 상태를 변경하기 위해 개체를 호출해야합니다. Java의 ActionListener 인터페이스가 이에 대한 좋은 예입니다.
기술적으로 C ++ functor는 구문 설탕을 활용 operator()()
하여 동일한 작업을 수행하는 콜백 객체 유형입니다 .
마지막으로 C에서만 사용해야하는 C 스타일 함수 포인터가 있습니다. 자세한 내용은 다루지 않겠습니다. 위에서 언급 한 다른 추상화는 훨씬 뛰어나므로 해당 언어로 사용해야합니다.
다른 사람들은 함수형 프로그래밍과 그 언어에서 함수 전달이 매우 자연스러운 방법에 대해 언급했습니다. Lambda와 콜백은 절차 및 OOP 언어가이를 모방하는 방식이며 매우 강력하고 유용합니다.