[IOS] flatMap 또는 compactMap을 사용하여 이전 데이터를 함께 전달 하는 방법
Swift에서도 flatMap
또는 compactMap
을 사용하여 이전 데이터를 함께 전달할 수 있습니다. Swift의 배열(Array)은 제네릭 타입이므로, 튜플(Tuple)이나 클래스(Class)를 사용하여 여러 값을 묶어서 반환할 수 있습니다.
아래는 Swift에서 flatMap
과 compactMap
을 사용하여 이전 데이터를 같이 전달하는 예시입니다:
1. 튜플(Tuple) 사용하기:
let numbers = [1, 2, 3]
let result = numbers.flatMap { number -> [(Int, Int)] in
let previousValue = number - 1
return [(previousValue, number)]
}
print(result) // 출력: [(0, 1), (1, 2), (2, 3)]`
2. 클래스(Class) 사용하기:
class DataWithPrevious {
let previous: Int
let current: Int
init(previous: Int, current: Int) {
self.previous = previous
self.current = current
}
}
let numbers = [1, 2, 3]
let result = numbers.compactMap { number -> DataWithPrevious? in
let previousValue = number - 1
return DataWithPrevious(previous: previousValue, current: number)
}
print(result) // 출력: [DataWithPrevious(previous: 0, current: 1), DataWithPrevious(previous: 1, current: 2), DataWithPrevious(previous: 2, current: 3)]`
flatMap
의 경우 배열을 평면화하는데 사용되므로, 튜플 형태로 데이터를 반환하면 중첩 배열이 평면화됩니다. compactMap
은 옵셔널 값을 제거하는데 사용되므로, 클래스 형태로 데이터를 반환하여 nil
값을 제거할 수 있습니다.
Swift에서는 튜플이나 클래스 외에도 구조체(Struct) 등을 사용하여 데이터를 묶을 수 있으므로, 상황에 맞게 가장 적절한 방식을 선택하여 사용하시면 됩니다.