[swift] 고차 함수를 사용하여 배열 내의 원소를 그룹화하는 방법은 어떻게 되나요?

Swift에서는 고차 함수를 사용하여 배열 내의 원소를 그룹화할 수 있습니다. 고차 함수는 함수를 매개 변수로 받거나 함수를 반환하는 함수를 말합니다. 여기에는 map, filter, reduce, flatMap 등이 포함됩니다. 그 중에서도 reduce 함수를 사용하여 배열 내의 원소를 그룹화할 수 있습니다.

다음은 배열 내의 문자열 원소를 길이별로 그룹화하는 예제입니다.

let arr = ["apple", "banana", "grape", "orange", "kiwi", "melon"]

let grouped = arr.reduce(into: [Int: [String]]()) { (result, element) in
    let length = element.count
    if result[length] == nil {
        result[length] = [element]
    } else {
        result[length]?.append(element)
    }
}

print(grouped)

위의 코드에서는 reduce 함수를 사용하여 초기값으로 [Int: [String]] 타입의 빈 딕셔너리를 전달합니다. 그리고 클로저를 사용하여 배열 내의 각 원소를 순회하면서 길이별로 그룹화를 수행합니다. 길이를 키로 사용하여 딕셔너리의 값으로 배열을 관리합니다. 만약 해당 길이의 키가 딕셔너리에 없는 경우에는 새로운 키를 추가하고, 이미 있는 경우에는 배열에 해당 원소를 추가합니다.

실행 결과는 다음과 같이 출력됩니다.

[5: ["apple"], 6: ["banana", "orange"], 4: ["kiwi"], 5: ["grape", "melon"]]

위의 예제는 문자열 원소를 길이별로 그룹화하는 방법을 보여주기 위한 간단한 예제입니다. 실제로는 더 복잡한 조건에 따라 그룹화를 수행할 수 있으며, 다른 고차 함수들을 조합하여 더 다양한 그룹화 작업을 수행할 수도 있습니다.

참고로, Swift의 고차 함수는 간결하고 효율적인 코드 작성을 지원하며, 배열을 다루는 경우 유용하게 사용할 수 있습니다.

해당 내용은 Swift 공식 문서의 High-Order Functions 참고 페이지를 기반으로 작성되었습니다.