티스토리 뷰
안녕하세요 Hani입니다.
이번에는 map, compactMap, flatMap의 차이에 대하여 알아볼 거예요. ☺️
map
map은 sequence의 모든 원소에 대한 변환 작업을 통해 새로운 Array을 만들어줍니다.
let cast = ["Vivien", "Marlon", "Kim", "Karl"]
let lowercaseNames = cast.map { $0.lowercased() }
// 'lowercaseNames' == ["vivien", "marlon", "kim", "karl"]
let letterCounts = cast.map { $0.count }
// 'letterCounts' == [6, 6, 3, 4]
compactMap
compactMap은 sequence의 모든 원소에 대한 변환 작업 결과 중 nil이 아닌 것만을 Array로 반환해줍니다.
let possibleNumbers = ["1", "2", "three", "///4///", "5"]
let mapped: [Int?] = possibleNumbers.map { str in Int(str) }
// [1, 2, nil, nil, 5]
let compactMapped: [Int] = possibleNumbers.compactMap { str in Int(str) }
// [1, 2, 5]
flatMap
flatMap은 sequence의 모든 원소에 대한 변환 작업을 concatenate하여 반환합니다.
let mapped = numbers.map { Array(repeating: $0, count: $0) }
// [[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]
let flatMapped = numbers.flatMap { Array(repeating: $0, count: $0) }
// [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
let flatMapped2 = Array(mapped.joined())
// [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
flatMap의 결과물은 map의 결과물을 joined한 후 Array로 변환한 것과 동일합니다.
References
https://developer.apple.com/documentation/swift/array/3017522-map
https://developer.apple.com/documentation/swift/array/2957701-compactmap
https://developer.apple.com/documentation/swift/array/3126947-flatmap
'Swift' 카테고리의 다른 글
[Swift] Property Wrapper로 translatesAutoresizingMaskIntoConstraints = false 강제하기 (0) | 2021.12.31 |
---|---|
[Swift] Generic Typealias로 뷰컨트롤러에 뷰모델 주입과 바인딩 강제하기 (0) | 2021.12.31 |
[스위프트] CaseIterable 프로토콜 / AllCases allCases 차이 (0) | 2021.08.28 |
[스위프트] Collection 프로토콜 (0) | 2021.08.28 |
[스위프트] lazy 지연 저장 프로퍼티 (3) | 2021.08.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 컴퓨터 추상화
- 에드몬드 카프 알고리즘
- 부스트캠프 6기
- State Restoration
- WWDC16
- CPU와 Memory
- 최단경로 알고리즘
- Testable
- 최단경로 문제
- WWDC17
- WWDC19
- 포드 풀커슨 알고리즘
- IOS
- 최대 매칭
- WWDC21
- CompositionalLayout
- HIG
- observeOn
- 최단경로문제
- rxswift
- MeTal
- test coverage
- 네트워크 플로우
- 벨만포드 시간복잡도
- 코딩대회
- 벨만포드 알고리즘
- 강한 순환 참조
- 다익스트라 시간복잡도
- mach-o
- 네트워크 유량
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함