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

아래는 sorted(by:) 함수를 사용하여 배열을 특정 값에 따라 정렬하는 예시 코드입니다:

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

// 배열을 오름차순으로 정렬
let sortedNumbers = numbers.sorted(by: { $0 < $1 })
print(sortedNumbers) // [1, 2, 3, 4, 5, 6, 9]

// 배열을 내림차순으로 정렬
let descendingNumbers = numbers.sorted(by: { $0 > $1 })
print(descendingNumbers) // [9, 6, 5, 4, 3, 2, 1]

위의 코드에서 $0$1은 클로저의 인자로 배열 내의 두 원소를 나타냅니다. 클로저의 반환값으로는 정렬 기준에 따라 두 원소의 순서를 결정하게 됩니다.

또한, sorted(by:) 함수는 기본적으로 배열의 원소들을 오름차순으로 정렬합니다. 내림차순으로 정렬하고 싶은 경우에는 클로저에서 $0$1의 순서를 바꿔주면 됩니다.

더 복잡한 정렬 기준을 사용하고 싶은 경우에는 클로저 내에서 조건을 추가하면 됩니다. 예를 들어, 문자열의 길이에 따라 오름차순으로 정렬하는 경우는 다음과 같이 작성할 수 있습니다:

let strings = ["apple", "banana", "cherry", "date"]

let sortedStrings = strings.sorted(by: {
    return $0.count < $1.count
})

print(sortedStrings) // ["date", "apple", "cherry", "banana"]

위의 코드에서는 각 문자열의 길이를 비교하여 오름차순으로 정렬하고 있습니다.

이러한 방식으로 sorted(by:) 함수를 통해 배열 내의 원소들을 원하는 방식으로 재배열할 수 있습니다.