-
[Swift] Higher Order FunctionsSwift 2023. 1. 7. 23:10
고차함수란?
다른 함수를 전달인자로 받거나 함수실해의 결과를 함수로 반환하는 함수이다.
Swift 의 고차함수는 아래와 같습니다.
1. map
2. filter
3. compactMap
4. flatMap
5. reduce
하나씩 알아보도록 하겠슴다
Map
요소를 하나씩 빼와서 클로저에서 처리 후 값을 할당하고 새로운 배열 반환합니다.
아래는 요소를 2 곱한 경우입니다
let numbers: [Int] = [2, 8, 15, 9, 10] let result = numbers.map { $0 * 2 } print(result) //[4, 16, 30, 18, 20]
Filter
요소를 하나씩 가지고와 비교연산하여 true 인 값만 남깁니다
비교연산하여 2로 나눠지는 짝수만 남기는 경우입니다
let numbers: [Int] = [2, 8, 15, 9, 10] let result = numbers.filter { $0 % 2 == 0 } print(result) //[2, 8, 10]
CompactMap
nil 인 값을 바로 없애줍니다.
let numbers: [Int?] = [2, nil, 8, 15, 9, 10, nil] let result = numbers.compactMap { $0 } print(result) //[2, 8, 15, 9, 10]
FlatMap
2차원 배열의 요소를 모두 꺼내어 1차원 배열로 요소를 나열할때 사용하면 편합니다
let numbers: [[Int]] = [[2, 8], [15, 9], [10, 19]] let result = numbers.flatMap { $0 } print(result) //[2, 8, 15, 9, 10, 19]
Reduce
요소들을 순회하며 재귀적으로 값을 가지고 특정 처리를 해서 하나의 값을 반환합니다.
아래는 초기값 0으로 시작해서 모든 요소를 더한 경우입니다.
let numbers: [Int] = [2, 8, 15, 9, 10] let result = numbers.reduce(0) { $0 + $1 } print(result) //44
'Swift' 카테고리의 다른 글
[Swift] GCD DispatchQueue 에 대해서 (0) 2023.01.09 [Swift] 안전하게 Array Index 하기 - subscript 직접 구현하기 (0) 2023.01.08 [Swift] String 에서 특정 문자를 지워보자 - replacingOccurrences (0) 2023.01.07 [Swift] Stack 구현하기 (0) 2023.01.04 [Swift] struct 의 mutating func (0) 2023.01.03