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

Swift에서는 reduce 고차 함수를 사용하여 배열 내의 원소들을 특정 값을 기준으로 그룹화할 수 있습니다. 이를 위해서는 다음과 같은 방법을 따를 수 있습니다:

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

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

print(groupedNumbers)

위의 코드에서 numbers 배열은 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]이라는 숫자들을 가지고 있습니다. reduce 함수를 사용하여 이를 그룹화하는 과정은 다음과 같습니다:

  1. reduce 함수를 호출할 때 초기값으로 빈 딕셔너리([:])를 전달합니다.
  2. 클로저를 사용하여 각 숫자를 그룹화하기 위한 로직을 작성합니다.
  3. 클로저의 result 파라미터는 그룹화된 결과를 저장할 딕셔너리입니다.
  4. number 파라미터는 현재 처리 중인 원소입니다.
  5. groupKey는 각 숫자를 “Even” 또는 “Odd”로 그룹화하기 위한 키입니다.
  6. result[groupKey, default: []]는 딕셔너리에서 groupKey로 저장된 값을 가져오는데, 값이 없는 경우 빈 배열을 기본으로 설정합니다.
  7. 그룹에 현재 숫자를 추가하기 위해 append 메소드를 호출합니다.

위의 코드를 실행하면 다음과 같은 결과가 출력됩니다:

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

따라서, numbers 배열의 원소들은 짝수와 홀수로 그룹화되었습니다.

이처럼 Swift의 고차 함수를 사용하여 배열 내의 원소를 특정 값에 따라 그룹화할 수 있습니다. 이는 코드의 가독성을 높이고 작업을 간단하게 처리할 수 있는 장점을 제공합니다.