[swift] 고차 함수를 사용하여 배열 내의 원소들을 특정 조건에 따라 그룹화하는 방법은 어떻게 되나요?

Swift에서는 배열 내의 원소들을 특정 조건에 따라 그룹화하는 고차 함수를 사용할 수 있습니다. 이를 위해 reduce 함수와 클로저를 이용하면 간단하게 구현할 수 있습니다.

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

let groupedNumbers = numbers.reduce(into: [Int: [Int]]()) { (result, number) in
    let group = (number % 2 == 0) ? "Even" : "Odd"
    result[group, default: []].append(number)
}

print(groupedNumbers)

위의 코드를 실행하면, numbers 배열에 있는 원소들을 짝수와 홀수 그룹으로 나누어 저장한 groupedNumbers 사전을 출력할 수 있습니다.

이 코드에서 reduce 함수를 활용하여 초기값으로 빈 사전을 넘겨주고, 클로저를 사용하여 각 원소를 그룹으로 나누어 사전에 저장하고 있습니다. 클로저에서는 현재 원소의 값을 확인하여 group 변수에 그룹 이름을 할당하고, 해당 그룹에 해당하는 배열에 원소를 추가하고 있습니다.

실행 결과는 다음과 같이 나타납니다:

["Odd": [1, 3, 5, 7, 9], "Even": [2, 4, 6, 8, 10]]

이와 같이 reduce 함수를 사용하면 배열 내의 원소들을 특정 조건에 따라 그룹화할 수 있습니다.