카테고리 없음

[iOS] Swift의 고차함수

Devleoper_yh 2025. 1. 9. 12:44
반응형

Swift의 고차함수는(Higher order functions)는 함수를 매개변수로 전달하거나 반환값으로 사용할 수 있는 함수를 말한다. 이를 활용하면 코드의 가독성과 재사용성을 높일 수 있다. 이해하기 쉽게 실생활에서 사용 예시를 들겠다.

map

  • map은 배열의 각 요소를 변환하여 새로운 배열을 생성한다.

예시: 상품 가격에 세금을 추가한 최종 가격 계산

let prices = [100, 200, 300]
let taxRate = 0.1

// 세금을 추가한 최종 가격을 담는 배열
let finalPrices = prices.map { $0 + ($0 * taxRate) }

print(finalPrices) // [110.0, 220.0, 330.0]

상품 가격 배열에 세금을 추가해 최종 가격 배열을 생성한다

filter

  • filter는 조건을 만족하는 요소만 포함하는 새로운 배열을 생성한다.

예시 : 특정 연령 이상의 사용자 필터링

let ages = [15, 22, 19, 33, 40]
let adultAges = ages.filter { $0 >= 18 }

print(adultAges) // [22, 19, 33, 40]

설명: 나이가 18세 이상인 성인 사용자만 필터링한다.

reduce

  • reduce는 배열의 요소를 결합하여 하나의 값을 만든다.

예시: 쇼핑몰 장바구니 총합 계산

let cartPrices = [100, 200, 300]
let totalPrice = cartPrices.reduce(0) { $0 + $1 }

print(totalPrice) // 600

설명: 장바구니의 모든 상품 가격을 더해 총합을 계산

compactMap

  • compactMap은 배열의 nil 값을 제외하고 배열의 유효한 값들로만 새로운 배열을 생성한다.

예시: 문자열 배열에서 숫자만 추출

let items = ["1", "two", "3", "four"]
let numbers = items.compactMap { Int($0) }

print(numbers) // [1, 3]

설명: 문자열 배열에서 숫자로 변환 가능한 값만 필터링

forEach

  • forEach는 배열의 각 요소에 특정 작업을 수행할 때 사용

예시: 주문 리스트 출력

let orders = ["Order #1", "Order #2", "Order #3"]
orders.forEach { print("Processing: \($0)") }

// 출력:
// Processing: Order #1
// Processing: Order #2
// Processing: Order #3

설명: 주문 리스트의 각 항목에 대해 처리 메시지를 출력.

sort/sorted

  • sort는 배열을 정렬하고 sorted는 정렬된 새 배열을 반환한다.

예시: 성적을 높은 순서대로 정렬

let scores = [85, 92, 76, 98]
let sortedScores = scores.sorted(by: >)

print(sortedScores) // [98, 92, 85, 76]

• 설명: 성적을 내림차순으로 정렬하여 상위 성적을 확인

flatMap

  • flatMap은 배열의 중첩된 구조를 평평하게 펼쳐 새로운 배열을 만든다.

예시: 과목별 학생 리스트를 하나의 배열로 병합

let studentsByClass = [["Alice", "Bob"], ["Charlie", "David"], ["Eve"]]
let allStudents = studentsByClass.flatMap { $0 }

print(allStudents) // ["Alice", "Bob", "Charlie", "David", "Eve"]

여러 반의 학생 리스트를 하나의 전체 리스트로 병합한다.

contains

  • contains는 배열에 특정 요소가 포함되어 있는지 확인한다.

예시: 고객이 구매한 제품 확인

let purchasedItems = ["Laptop", "Phone", "Tablet"]
let hasLaptop = purchasedItems.contains("Laptop")

print(hasLaptop) // true

고객의 구매 목록에 특정 제품이 있는지 확인한다.
반응형