[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
이라는 구조체를 정의하고, name
과 age
라는 속성을 가지고 있습니다. people
배열은 Person
객체들로 구성되어 있습니다.
people
배열을 sorted
함수를 사용하여 정렬하는데, 정렬 조건을 구현하기 위해 클로저를 전달합니다. 클로저는 두 개의 Person
객체를 인자로 받아서 정렬 조건을 판단하고 Bool
값을 반환합니다.
정렬 조건은 person1
의 나이가 person2
의 나이보다 작은 경우 true
를 반환하고, person1
의 나이가 person2
의 나이보다 큰 경우 false
를 반환합니다. 나이가 같은 경우에는 이름을 비교하여 정렬합니다.
최종적으로 정렬된 sortedPeople
배열은 for-in
문을 사용하여 출력되는데, 결과는 다음과 같습니다.
Adam 20
John 25
Jane 30
위의 예제 코드는 나이와 이름을 기준으로 정렬한 것이지만, 필요에 따라 다양한 속성과 조건을 사용하여 정렬 조건을 추가할 수 있습니다. 이를 통해 스위프트의 강력한 정렬 기능을 활용하여 복잡한 정렬 조건을 손쉽게 구현할 수 있습니다.
더 자세한 내용은 스위프트 문서를 참고하시기 바랍니다.