적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/Swift

[Swift] 고차함수 map, compactMap

hongssup_ 2023. 1. 11. 16:13
반응형

 

map(_:)

Returns an array containing the results of mapping the given closure over the sequence’s elements.

func map<T>(_ transform: (Self.Element) throws -> T) rethrows -> [T]

Complexity : O(n)

 

compactMap(_:)

Returns an array containing the non-nil results of calling the given transformation with each element of this sequence.

func compactMap<ElementOfResult>(_ transform: (Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]

Complexity : O(m + n), where n is teh length of this sequence and m is the length of the result. 

 

Use this method to receive an array of non-optional values when your transformation produces an optional value.

let possibleNumbers = ["1", "2", "three", "//4", "5"]
let mapped: [Int?] = possibleNumbers.map { Int($0) }
//[Optional(1), Optional(2), nil, nil, Optional(5)]
let compactMapped: [Int] = possibleNumbers.compactMap { Int($0) }
//[1, 2, 5]

map을 사용했을 때는 결과값이 nil 혹은 옵셔널로 나오지만,

compactMap을 사용하면 옵셔널이 제거된 유효한 값들만 반환된다. 

기존 map에서 옵셔널 바인딩의 기능이 추가된 느낌

 

728x90
반응형

'Swift iOS 앱 개발 > Swift' 카테고리의 다른 글

[Swift] Escape closure 탈출클로저란?  (0) 2023.01.13
[Swift] Generic에 대하여  (0) 2023.01.12
[Swift] Extension에 대하여  (0) 2023.01.09
[Swift] POP?  (0) 2023.01.07
[Swift] mutating?  (0) 2023.01.06