[swift] 고차 함수인 compactMap과 flatMap을 사용하여 배열을 처리하는 방법은 무엇인가요?

compactMap

compactMap은 배열을 변환하여 옵셔널 값을 제거하고 새로운 배열을 생성합니다. 예를 들어, 배열에서 정수를 파싱하거나 변환하여 새로운 배열을 만들 때 사용됩니다. 아래는 compactMap을 사용하여 문자열 배열을 정수 배열로 변환하는 예제입니다.

let strings = ["1", "2", "three", "4", "five"]
let integers = strings.compactMap { Int($0) }
// integers: [1, 2, 4]

위 예제에서 “three”와 “five”는 정수로 변환할 수 없기 때문에 compactMap은 해당 값들을 제거하고 새로운 정수 배열을 생성하게 됩니다.

flatMap

flatMap은 배열의 각 요소에 대해 변환 또는 매핑하여 다차원 배열을 일차원 배열로 만듭니다. 예를 들어, 배열의 각 요소에 배열을 추가하고 싶을 때 사용됩니다. 아래는 flatMap을 사용하여 다차원 배열을 일차원 배열로 평평하게 만드는 예제입니다.

let arrays = [[1, 2, 3], [4, 5], [6, 7, 8]]
let flattenedArray = arrays.flatMap { $0 }
// flattenedArray: [1, 2, 3, 4, 5, 6, 7, 8]

위 예제에서 flatMap은 다차원 배열을 평탄화하여 일차원 배열을 만들게 됩니다.

따라서, compactMap은 옵셔널 값을 제거하고 새로운 배열을 만들 때, flatMap은 다차원 배열을 일차원 배열로 만들 때 사용됩니다.

참고 문헌: