[swift] flatMap 고차 함수의 사용법과 예시는 어떻게 되나요?

flatMap은 배열이나 옵셔널의 값을 변환하거나, 옵셔널 체인을 간결하게 처리할 때 사용하는 고차 함수입니다. flatMap은 map과 유사하지만, 반환값이 옵셔널이거나 배열이 아니라서 “평탄화”라는 의미가 담겨있습니다. flatMap은 주로 배열을 변환하거나 옵셔널 체인을 처리하는데 사용됩니다.

사용법

let flattenedArray = array.flatMap { element in
    // 변환 로직
    // 변환 값이 옵셔널이 될 수 있음
}

예시 1: 배열의 값 변환하기

let numbers = [1, 2, 3, 4, 5]
let transformedArray = numbers.flatMap { number in
    return number * 2 // 각 원소에 2를 곱한 값으로 변환
}
// transformedArray: [2, 4, 6, 8, 10]

위 예시에서는 배열(numbers)의 각 원소에 2를 곱한 값을 반환하는 변환 로직을 flatMap으로 구현했습니다.

예시 2: 옵셔널 체인 처리하기

let myData: [String: Any] = [
    "name": "John",
    "age": 30,
    "address": nil
]
let address = myData["address"] as? String

let flattenedAddress = myData.flatMap { data in
    return data["address"] as? String
}
// address: nil
// flattenedAddress: nil

위 예시에서는 딕셔너리(myData)의 “address” 키의 값을 옵셔널로 가져오는데, flatMap을 사용하여 nil값을 제거해주었습니다.

옵셔널 체인을 일반적인 방법인 if-let구문으로 처리할 경우에는 직접 nil 체크를 해줘야하는데, flatMap을 사용하면 간결하게 nil을 제거할 수 있습니다.

참고 자료