고차함수

moonazn·2025년 7월 23일

Swift

목록 보기
7/11

고차 함수(High-order Function)

: 함수를 인자로 받거나, 함수를 반환하는 함수
즉, 함수를 다루는 함수이다.

1. 함수를 인자로 받는 고차 함수

func applyTwice(_ x: Int, _ f: (Int) -> Int) -> Int {
	return f(f(x))
}

let result = applyTwice(3) { $0 + 1 }	// (3 + 1) + 1 = 5
  • f는 Int를 받아 Int를 반환하는 함수이다.
  • applyTwice는 이 함수를 두 번 적용한다.

2. 함수를 반환하는 고차 함수

func makeAdder(_ x: Int) -> (Int) -> Int {
	return { y in x + y }
}

let add3 = makeAdder(3)
let result = add3(5)	// 3 + 5 = 8
  • makeAdder는 함수를 반환하는 함수이다.
  • 반환된 함수는 x를 캡쳐해서 y에 더해준다.

대표 고차 함수 1) map

  • 배열의 각 요소에 어떤 연산을 적용한 새로운 배열을 만든다.
  • 배열의 요소들을 하나씩 순회하면서, 클로저(함수)에 넣고, 그 결과를 모아서 새 배열을 만든다.
let numbers = [1, 2, 3]
let doubled = numbers.map { $0 * 2 }
print(doubled) // [2, 4, 6]

대표 고차 함수 2) filter

  • 조건을 만족하는 요소만 골라낸 배열을 만든다.
  • 배열의 요소를 하나씩 검사해서, true를 반환하는 값만 남긴다.
let numbers = [1, 2, 3, 4, 5]
let even = numbers.filter { $0 % 2 == 0 }
print(even) // [2, 4]

대표 고차 함수 3) reduce

  • 배열의 요소들을 하나의 값으로 축약(누적)한다.
  • 초기값을 주고, 배열의 각 요소를 누적시켜서 하나의 결과값을 만든다.
let numbers = [1, 2, 3, 4]
let sum = numbers.reduce(0) { $0 + $1 }
print(sum) // 10

대표 고차 함수 4) sorted(by:)

  • 배열을 원하는 기준에 따라 정렬한 새로운 배열을 만든다.
  • 정렬 기준(비교 연산자 등)을 전달해서 그 기준에 따라 배열을 정렬한다.
let words = ["banana", "apple", "cherry"]
let sortedWords = words.sorted(by: <)
print(sortedWords) // ["apple", "banana", "cherry"]
profile
개발 공뷰

0개의 댓글