함수 — 요약
함수 — 요약 (Functions — Summary)
함수(function) 챕터가 꽤 길었죠? 한 번 정리하고 넘어갈게요. 특히 고차 함수(HOF, Higher-Order Function)와 익명 함수가 어떻게 얽혀 있는지, 그리고 HOF를 '소비'하는 입장과 '만드는' 입장을 각각 어떻게 다루는지가 핵심이에요.
출처: Scala 3 Book
본문
정말 긴 챕터였으니, 여기서 다룬 핵심 내용을 복습해 볼게요.
**고차 함수(HOF, Higher-Order Function)**는 보통 다른 함수를 입력 매개변수로 받거나, 함수를 값으로 반환하는 함수로 정의돼요. Scala에서는 함수가 일급 값(first-class values)이기 때문에 이런 게 가능해요.
섹션을 따라가면서 먼저 이런 것들을 봤어요:
-
익명 함수(anonymous functions)를 작은 코드 조각으로 작성할 수 있다
-
그걸 컬렉션 클래스의 수많은 HOF(메서드), 즉
filter,map같은 메서드에 넘길 수 있다 -
이렇게 작은 코드 조각과 강력한 HOF로 아주 적은 코드로도 많은 기능을 만들 수 있다
익명 함수와 HOF를 살펴본 뒤에는 이런 것들도 봤어요:
- 함수 변수(function variables)는 단지 변수에 바인딩된 익명 함수일 뿐이다
HOF의 소비자가 되는 법을 본 뒤에는, HOF의 생성자가 되는 법도 봤어요. 구체적으로는:
-
함수를 입력 매개변수로 받는 메서드를 작성하는 법
-
메서드에서 함수를 반환하는 법
이 챕터가 주는 또 하나의 유용한 부수 효과는, 함수용 타입 시그니처를 선언하는 예시를 많이 봤다는 점이에요. 덕분에 같은 문법으로 함수 매개변수·익명 함수·함수 변수를 정의할 수 있고, map, filter 같은 고차 함수의 Scaladoc도 더 쉽게 읽을 수 있게 됐어요.