Ordenação de coleção por vários campos em Kotlin
Olá a todos! Comecei a aprender Kotlin recentemente e me deparei com uma tarefa que parece simples, mas não consigo encontrar uma solução elegante.
Tenho uma lista de objetos da classe `Person`:
```kotlin
data class Person(
val name: String,
val age: Int,
val salary: Double
)
```
Preciso ordenar esta lista primeiro por idade (crescente), depois, se a idade for igual, por nome (em ordem alfabética), e finalmente, se tanto a idade quanto o nome forem iguais, por salário (decrescente).
Em Java, eu usaria uma cadeia de comparators, mas em Kotlin vejo que existe a função `sortedBy`, mas ela aceita apenas um campo. Existe `sortedWith` e `compareBy`, mas não entendo completamente como combiná-los corretamente.
Tentei este código:
```kotlin
val sortedList = list.sortedBy { it.age }.sortedBy { it.name }.sortedByDescending { it.salary }
```
Mas claramente não funciona, porque cada ordenação subsequente sobrescreve a anterior. Como implementar corretamente uma ordenação de múltiplos níveis?