반응형
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
고객의 구매 목록에 특정 제품이 있는지 확인한다.
반응형