[Swift] map, flatmap 무엇이 다를까?

map 은 배열의 각 요소에게 연산을 실행한다.

예를 들면, array.map(함수A) 를 하게 된다면 모든 요소에 함수A를 실행하고 다시 배열을 반환한다.

array = [1, 2, 3, 4, 5]
array.map($0 * 2)

위와 같이 한다면 [2, 4, 6, 8, 10] 이 반환된다.

map 내의 쓰는 함수를 단순한 연산이 아니라 클로저를 사용해 다양하게 확인할 수 있다.

그렇다면 flatmap 은 무엇일까

이름에서부터 느껴지겠지만 flatmap 은 방금 말한 map 과 크게 다르지 않다.

하지만 flatten 이라는 함수가 합쳐졌다는 게 다른 점.

flatten 함수는 중첩배열을 풀고 옵셔널을 지우는 함수.

그냥 간단하게 예제를 보면 아주 간단하게 이해가 될 것 같다.

var array: [Int?] = [1, [2, nil], [3, 4], nil, 5]
array.flatmap($0 * 3)

위와 같이 한다면 [3, 6, 9, 12, 15] 이 반환된다.

안에 있는 배열들을 풀고, 옵셔널 요소들을 지운다고 생각하면 된다.

flatmap 함수는 map 의 응용버전이라 map 함수 쓰는 상황 중 특수한 상황에 쓰게 될 것 같은데

아직 언제 쓰일 거 같은 지 감이 안잡히기는 한다.

참고 블로그

https://soooprmx.com/archives/6784
http://seorenn.blogspot.kr/2015/09/swift-flatmap.html

Hyejun Jang

Hyejun Jang

If you do nothing, you are not alive. Just Do It!

comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora