Swift)map, flatMap, compactMap

Havi·2021년 2월 7일
0

Swift기초

목록 보기
17/19

/// map
/// 각 요소에 대한 값을 변경
/// 배열의 상태로 반환한다.
/*구현체
func map<T>(_ transform: (String) throws -> T) rethrows -> [T]
*/

let array: [Int] = [1, 2, 3, 4]
let mapped = array.map { $0 * 2 }

print(array)
print(mapped)

/// compactMap
/// 1차원 배열에서 nil을 제거하고 옵셔널 바인딩을 할 때
/*구현체
func compactMap<ElementOfResult>(_ transform: (Int?) throws -> ElementOfResult?) rethrows -> [ElementOfResult]
*/
let optionalArray: [Int?] = [1, 2, nil, 3, 4, nil, 5, 6]
let compacted = optionalArray.compactMap { $0 }

print(optionalArray)
print(compacted)


/// flatMap
/// 2차원 배열을 1차원 배열로 flatten하게 만들 때
/*구현체
func flatMap<SegmentOfResult>(_ transform: ([Int]) throws -> SegmentOfResult) rethrows -> [SegmentOfResult.Element] where SegmentOfResult : Sequence
*/
let twoDimensionArray: [[Int]] = [[1, 2, 3], [4, 5, 6]]
let flattened = twoDimensionArray.flatMap{ $0 }

print(twoDimensionArray)
print(flattened)
profile
iOS Developer

0개의 댓글