[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
함수를 사용하여 이를 그룹화하는 과정은 다음과 같습니다:
reduce
함수를 호출할 때 초기값으로 빈 딕셔너리([:]
)를 전달합니다.- 클로저를 사용하여 각 숫자를 그룹화하기 위한 로직을 작성합니다.
- 클로저의
result
파라미터는 그룹화된 결과를 저장할 딕셔너리입니다. number
파라미터는 현재 처리 중인 원소입니다.groupKey
는 각 숫자를 “Even” 또는 “Odd”로 그룹화하기 위한 키입니다.result[groupKey, default: []]
는 딕셔너리에서groupKey
로 저장된 값을 가져오는데, 값이 없는 경우 빈 배열을 기본으로 설정합니다.- 그룹에 현재 숫자를 추가하기 위해
append
메소드를 호출합니다.
위의 코드를 실행하면 다음과 같은 결과가 출력됩니다:
["Even": [2, 4, 6, 8, 10], "Odd": [1, 3, 5, 7, 9]]
따라서, numbers
배열의 원소들은 짝수와 홀수로 그룹화되었습니다.
이처럼 Swift의 고차 함수를 사용하여 배열 내의 원소를 특정 값에 따라 그룹화할 수 있습니다. 이는 코드의 가독성을 높이고 작업을 간단하게 처리할 수 있는 장점을 제공합니다.