Swift/Swift 문법
[고차함수 5] forEach, compactMap, flatMap
내일은개발천재🎵
2022. 12. 29. 16:59
forEach 함수
- 기존 배열 등의 각 아이템을 활용해서 각 아이템 별로 특정 작업을 실행한다.
- 클로저는 return 타입 없이 작업을 할 뿐이다.
- return → Void (새로운 배열을 반환하지 않는다.)
- 기존 배열의 아이템을 가지고 작업을 하는 것이다.
- 클로저는 return 타입 없이 작업을 할 뿐이다.
let numbers = [1, 2, 3, 4, 5]
numbers.forEach { num in
print(num)
}
numbers.forEach { print($0) }
compactMap 함수
- 기존 배열 등 각 아이템을 새롭게 매핑해서 변형하되, 옵셔널 요소는 제거하고, 새로운 배열을 리턴한다.
- map 함수 + 옵셔널 제거 기능이 있다고 생각하면 된다.
- optional binding의 기능이 내장되어있다.
let strings = [String?] = ["A", nil, "C"]
var result = strings.compactMap { $0 }
print(result)
// result = strings.filter { $0 != nil }.map { $0! }
let numbers = [-2, -1, 0, 1, 2]
// 0보다 큰 경우만 result에 담는다.
var result = numbers.compactMap { $0 >= 0 ? $0 : nil }
// result = numbers.filter { $0 >= 0 }
flatMap 함수
- 내부에 중첩된 배열을 벗겨준다.
- 중첩된 배열의 각 아이템을 새롭게 매핑하며, 내부 중첩된 배열을 제거하고 리턴한다.
- 매핑 방식은 클로저에서 정의한다.
var nestedArray = [[1, 2, 3], [4, 5, 6]]
print(nestedArray.flatMap{ $0 }
var nestedArray = [[[1,2,3], [4,5,6], [7, 8, 9]], [[10, 11], [12, 13, 14]]]
var result = nestedArray
.flatMap { $0 }
.flatMap { $0 }
print(result)
앨런님의 강의를 듣고 작성한 글입니다.