TIL: 고차함수 - map / filter / reduce

Royce·2025년 3월 30일

Swift 문법

목록 보기
63/63

고차함수

  • 고차함수(Higher-order Function)는 함수를 인자로 받거나 함수를 반환하는 함수이다
  • Swift에서는 함수형 프로그래밍의 기본으로 map, filter, reduce 같은 고차함수를 자주 사용한다
  • 배열, 딕셔너리, 세트 등 Sequence 또는 Collection 프로토콜을 따르는 타입에서 사용 가능하다

map 함수

  • map 함수는 기존 배열의 각 요소를 특정 방식으로 변형하여 새로운 배열을 생성하는 함수이다
  • 내부에 전달되는 클로저가 각 요소를 어떻게 매핑할지 정의한다
let numbers = [1, 2, 3, 4, 5]

// 각 요소에 문자열을 붙여 새로운 배열을 생성
let stringMapped = numbers.map { (num) in
    return "숫자: \(num)"
}

// 축약 문법으로 표현
let conciseMapped = numbers.map { "숫자: \($0)" }

// 결과: ["숫자: 1", "숫자: 2", "숫자: 3", "숫자: 4", "숫자: 5"]

filter 함수

  • filter 함수는 배열의 각 요소 중 조건을 만족하는 값만 추출하여 새로운 배열을 만든다
  • 클로저의 반환값이 true인 요소만 결과 배열에 포함된다
let names = ["Apple", "Black", "Circle", "Dream", "Blue"]

// "B"를 포함한 문자열만 필터링
let filteredNames = names.filter { $0.contains("B") }
// 결과: ["Black", "Blue"]

let numbers = [1, 2, 3, 4, 5, 6]

// 짝수만 필터링
let evens = numbers.filter { $0 % 2 == 0 }
// 결과: [2, 4, 6]

reduce 함수

  • reduce 함수는 배열의 모든 요소를 하나로 결합하여 단일 값을 생성하는 함수이다
  • 초깃값과 결합 방식(클로저)을 인자로 받는다
let nums = [1, 2, 3, 4, 5]

// 합계를 구하는 reduce
let sum = nums.reduce(0) { (total, value) in
    return total + value
}

// 축약형 문법
let compactSum = nums.reduce(0) { $0 + $1 }  // 결과: 15

// 100에서 모든 수를 뺌
let difference = nums.reduce(100) { $0 - $1 }  // 결과: 85

map / filter / reduce 조합 예제

  • 홀수만 골라서 제곱하고, 그 총합을 구하는 코드
let values = [1, 2, 3, 4, 5]

// 홀수 필터 → 제곱 → 누적 합계
let result = values
    .filter { $0 % 2 != 0 }  // [1, 3, 5]
    .map { $0 * $0 }         // [1, 9, 25]
    .reduce(0) { $0 + $1 }   // 35

// 출력 결과: 35

고차함수 비교 요약

함수설명반환 결과
map각 요소를 변형새로운 배열
filter조건을 만족하는 요소만 추출새로운 배열
reduce모든 요소를 누적단일 값

고차함수 활용 예제 확장

let scores = [65, 70, 85, 90, 100]

// 점수를 필터링하고 평균을 계산
let average = scores
    .filter { $0 >= 70 }          // [70, 85, 90, 100]
    .reduce(0) { $0 + $1 } / 4    // 총합 345 / 4 = 86

// 출력: 86
  • filter로 조건에 맞는 점수를 추출하고 reduce로 합산한 후 평균 계산에 활용
  • 실무에서도 데이터 전처리 및 통계 처리에 자주 사용된다

요약

  • 고차함수는 함수를 인자로 받거나 반환하는 함수이다
  • map은 요소를 변형하고, filter는 조건에 따라 걸러내며, reduce는 누적하여 단일 값을 생성한다
  • 고차함수는 가독성이 높고 함수형 스타일의 프로그래밍을 가능하게 한다
  • 실무에서도 다양한 데이터 처리 작업에 널리 활용된다
profile
iOS 개발자 지망생

0개의 댓글