[swift] 여러 개의 정렬 함수를 사용하여 복잡한 정렬 조건 구현하기

스위프트에서 배열을 정렬할 때, 여러 개의 조건을 사용하여 정렬을 수행해야 하는 경우가 있습니다. 이때, 스위프트의 정렬 함수를 사용하여 간단하고 효율적으로 복잡한 정렬 조건을 구현할 수 있습니다.

다음은 여러 개의 정렬 조건을 구현하는 예제 코드입니다.

struct Person {
    var name: String
    var age: Int
}

let people = [
    Person(name: "John", age: 25),
    Person(name: "Jane", age: 30),
    Person(name: "Adam", age: 20)
]

let sortedPeople = people.sorted { (person1, person2) -> Bool in
    if person1.age < person2.age {
        return true
    } else if person1.age > person2.age {
        return false
    } else {
        return person1.name < person2.name
    }
}

for person in sortedPeople {
    print(person.name, person.age)
}

위의 예제 코드에서는 Person이라는 구조체를 정의하고, nameage라는 속성을 가지고 있습니다. people 배열은 Person 객체들로 구성되어 있습니다.

people 배열을 sorted 함수를 사용하여 정렬하는데, 정렬 조건을 구현하기 위해 클로저를 전달합니다. 클로저는 두 개의 Person 객체를 인자로 받아서 정렬 조건을 판단하고 Bool 값을 반환합니다.

정렬 조건은 person1의 나이가 person2의 나이보다 작은 경우 true를 반환하고, person1의 나이가 person2의 나이보다 큰 경우 false를 반환합니다. 나이가 같은 경우에는 이름을 비교하여 정렬합니다.

최종적으로 정렬된 sortedPeople 배열은 for-in 문을 사용하여 출력되는데, 결과는 다음과 같습니다.

Adam 20
John 25
Jane 30

위의 예제 코드는 나이와 이름을 기준으로 정렬한 것이지만, 필요에 따라 다양한 속성과 조건을 사용하여 정렬 조건을 추가할 수 있습니다. 이를 통해 스위프트의 강력한 정렬 기능을 활용하여 복잡한 정렬 조건을 손쉽게 구현할 수 있습니다.

더 자세한 내용은 스위프트 문서를 참고하시기 바랍니다.