안녕하세요.
맥파이입니다.
오늘은 고차 함수에 대해 공부를 해보려고 합니다.
고차함수
Swift에서 고차 함수란, 다른 함수를 매개변수로 받거나 함수를 반환하는 함수를 말합니다.
함수를 다루는 함수입니다.
Swift에서는 map, filter, reduce 등의 고차 함수가 제공됩니다.
이러한 고차 함수들은 각각의 요소를 처리하는 방법을 정의한 함수를 인자로 받아 이를 기반으로 요소들을 처리하고 새로운 컬렉션을 반환합니다.
고차함수의 종류
- map: 배열의 모든 요소에 동일한 작업을 수행하고 새로운 배열을 반환합니다.
- filter: 주어진 조건에 따라 배열의 요소를 필터링하여 새로운 배열을 반환합니다.
- reduce: 배열의 모든 요소를 결합하여 하나의 값으로 만듭니다.
- flatMap: 배열의 각 요소에 동일한 작업을 수행하고, 결과를 1차원 배열로 반환합니다.
- compactMap: nil이 아닌 값으로 매핑되는 요소로 새로운 배열을 반환합니다.
- forEach: 배열의 각 요소에 대해 지정된 작업을 수행합니다.
- sorted: 배열의 요소를 지정된 순서로 정렬합니다.
- contains: 배열이 특정 요소를 포함하는지 여부를 반환합니다.
- allSatisfy: 배열의 모든 요소가 지정된 조건을 충족하는지 여부를 반환합니다.
- first(where:): 지정된 조건을 충족하는 배열의 첫 번째 요소를 반환합니다.
- count: 배열의 요소 수를 반환합니다.
- max: 배열의 최대 요소를 반환합니다.
- min: 배열의 최소 요소를 반환합니다.
MAP
Swift에서의 map 함수는 배열의 각 요소를 특정 함수를 통해 변환한 결과로 이루어진 새로운 배열을 생성합니다.
map 함수는 다음과 같은 형태로 사용할 수 있습니다.
let numbers = [1, 2, 3, 4, 5]
let doubledNumbers = numbers.map { $0 * 2 }
print(doubledNumbers) // [2, 4, 6, 8, 10]
numbers 배열은 [1, 2, 3, 4, 5]로 초기화됩니다.
map 함수를 호출하여 각 요소를 2배로 변환한 새로운 배열인 doubledNumbers를 생성합니다.
이 새로운 배열은 [2, 4, 6, 8, 10]으로 이루어져 있습니다.
map 함수의 인자는 변환 함수를 전달합니다.
클로저를 사용하여 변환 함수를 정의했습니다.
클로저는 $0으로 배열의 각 요소를 참조하고, 이를 2배로 곱한 값을 반환합니다.
map 함수는 원본 배열을 변경하지 않고 새로운 배열을 반환합니다.
map 함수는 배열의 각 요소를 변환하여 새로운 배열을 생성하는 데에 매우 유용합니다.
FILTER
filter 함수는 배열에서 특정 조건을 만족하는 요소만을 걸러내어 이루어진 새로운 배열을 생성합니다.
filter 함수는 다음과 같은 형태로 사용할 수 있습니다.
let numbers = [1, 2, 3, 4, 5]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers) // [2, 4]
numbers 배열은 [1, 2, 3, 4, 5]로 초기화됩니다.
filter 함수를 호출하여 배열에서 짝수를 찾아내어 이루어진 새로운 배열인 evenNumbers를 생성합니다.
filter 함수의 인자로 조건 함수를 전달합니다.
클로저는 $0으로 배열의 각 요소를 참조하고, 이 요소가 2로 나누어 떨어지는지를 검사하여 Bool 값을 반환합니다.
조건 함수가 true를 반환하는 요소들만 걸러내어 새로운 배열을 생성합니다.
결과 배열은 [2, 4]로 이루어지게 됩니다.
filter 함수는 원본 배열을 변경하지 않고 새로운 배열을 반환합니다.
filter 함수는 배열에서 특정 조건을 만족하는 요소만을 걸러내어 새로운 배열을 생성하는 데에 매우 유용합니다.
REDUCE
reduce 함수는 배열의 모든 요소를 결합하여 하나의 값으로 만들어주는 함수입니다.
reduce 함수는 다음과 같은 형태로 사용할 수 있습니다.
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0, { $0 + $1 })
print(sum) // 15
numbers 배열은 [1, 2, 3, 4, 5]로 초기화됩니다.
reduce 함수를 호출하여 배열의 모든 요소를 더한 값을 구합니다.
첫 번째 인자인 0은 초기값을 의미합니다.
두 번째 인자는 클로저를 전달하는데, 이 클로저는 배열의 각 요소를 누적하면서 새로운 값을 생성합니다.
배열의 모든 요소를 처리하여 덧셈을 수행하고, 최종적으로 15를 반환합니다.
reduce 함수는 배열의 모든 요소를 결합하여 하나의 값으로 만드는 데에 매우 유용합니다.
고차함수는 종류가 많으니 몇개의 글로 나누어서 만나도록 하지요.
그럼 또 만나요!!
'개발 관련 > iOS SWIFT' 카테고리의 다른 글
[Xcode15 오류] DT_TOOLCHAIN_DIR cannot be used... (0) | 2023.10.18 |
---|---|
[Swift] UIKit소스에서 SwiftUI 화면 사용하기 (0) | 2023.08.23 |
[Swift] ARC(Automatic Reference Counting), 참조 카운트 (0) | 2023.04.09 |
[Swift] Generic에 대해 공부해봅시다. (0) | 2023.04.09 |
[Swift] typealias와 associatedtype의 차이점 (0) | 2023.04.07 |