Kotlin – Sort MutableList basado en Object Property

Tengo este Objeto Token:

class Token(type: TokenType, value: String, position: IntRange = 0..0) 

Declaro una MutableList:

 val tokens: MutableList<Token> = mutableListOf() // Mutable List filled 

Ahora quiero orderar mi list según el primer valor de la position IntRange. Intenté hacer esto:

 tokens .sortedBy { it.position.first } 

Sin embargo, no tengo acceso al object después de usar la palabra key it, por lo que la position se resalta en rojo.

¿Alguna sugerencia?

La position es un parámetro en lugar de una propiedad , para llegar a una propiedad en el constructor primario mediante la palabra key val / var , por ejemplo:

 //makes the parameter to a property by `val` keyword---v class Token(val type: TokenType, val value: String, val position:IntRange = 0..0) 

ENTONCES puede orderar sus Token por position , por ejemplo:

 tokens.sortedBy { it.position.first } 

Otra observación es que sortedBy devuelve una copy orderada de la list. Si desea orderar su list mutable en su lugar, debe usar la function sortBy :

 tokens.sortBy { it.position.first } // tokens is sorted now