Swift에서 고차함수 (Higher-Order-Functions)는 하나 이상의 함수를 인자로 받고, 함수를 반환
스위프트에서 자주 사용되는 대표적인 고차함수로는 map , filter , reduce , compactMap , flatMap , forEach 등이 있습니다.
함수는 배열이나 컬렉션을 처리할 떄 매우 유용합니다.
1. map
각 요소에 동일한 연산을 적용한 결과
let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = numbers.map { $0 * 2 }
print(squaredNumbers) // [2, 4, 6, 8, 10]
2. filter
filter 함수는 컬렉션에서 주어진 조건에 맞는 요소
let numbers = [1, 2, 3, 4, 5]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers) // [2, 4]
3. reduce
reduce 함수는 컬렉션의 모든 요소를 하나로 합치는 동작을 수행
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0) { $0 + $1 }
print(sum) // 15
4. compactMap
'compactMap' '함수는' map '과 비슷하지만, 'nil' 값을 제거하고, 'Optional' 값을 해제하여 새로운 배열을 반환합니다.
let strings = ["1", "2", "three", "4", "five"]
let numbers = strings.compactMap { Int($0) }
print(numbers) // [1, 2, 4]
5. flatMap
flatMap 함수는 배열을 평평하게 만들어서 단일 배열로 반환
let nestedArray = [[1, 2, 3], [4, 5], [6, 7, 8]]
let flatArray = nestedArray.flatMap { $0 }
print(flatArray) // [1, 2, 3, 4, 5, 6, 7, 8]
6. forEach
'forEach' 함수는 컬렉션의 각 요소에 대해 주어진 클로저를 실행합니다. 'for-in' 루프와 비슷하지만, 반환값이 없고 중간에 루프를 종료할 수 없습니다.
let numbers = [1, 2, 3, 4, 5]
numbers.forEach { print($0) }
// 1
// 2
// 3
// 4
// 5
7. 'sort' 'sorted'
'sorted'는 원본 배열을 졍렬한 새로운 배열을 반환하며, 'sort' 는 원본 배열 자체를 정렬합니다.
var numbers = [5, 3, 1, 4, 2]
let sortedNumbers = numbers.sorted() // [1, 2, 3, 4, 5]
numbers.sort() // numbers 자체가 정렬됨
print(numbers) // [1, 2, 3, 4, 5]
8. 'contains'
'contains' 함수는 컬렉션에 특정 요소가 포함되어 있는지 확인
let numbers = [1, 2, 3, 4, 5]
let hasThree = numbers.contains(3)
print(hasThree) // true
간결하고 가동성 좋은 코드를 작성 가능합니다.
Swift의 고차함수들은 함수형 프로그래밍의 요소를 가져와, 배열이나 컬렉션을 더욱 효율적으로 가능
'Swift '문법'' 카테고리의 다른 글
비동기(Asynchronous),네트워킹(Networking) (0) | 2024.08.14 |
---|---|
Rx스위프트 (0) | 2024.08.13 |
Model (0) | 2024.08.09 |
Extension (0) | 2024.08.08 |
타입 캐스팅 (0) | 2024.08.07 |