我有这个令牌对象:
class Token(type: TokenType, value: String, position: IntRange = 0..0)
我宣布一个MutableList:
val tokens: MutableList<Token> = mutableListOf()
// Mutable List filled
现在我想根据IntRange位置的第一个值对列表进行排序。我试过这样做:
tokens
.sortedBy { it.position.first }
但是,在使用it关键字后我无权访问该对象,因此位置以红色突出显示。
有什么建议吗?
答案 0 :(得分:3)
另一个观察是sortedBy
返回列表的排序副本。如果要对可变列表进行排序,则应使用sortBy
函数:
tokens.sortBy { it.position.first }
// tokens is sorted now
答案 1 :(得分:1)
position
是parameter而不是property,val
/ {property上的primary constructor var
{1}}关键字,例如:
//makes the parameter to a property by `val` keyword---v
class Token(val type: TokenType, val value: String, val position:IntRange = 0..0)
然后您可以按Token
对position
进行排序,例如:
tokens.sortedBy { it.position.first }
答案 2 :(得分:1)
尝试使用 sortBy 方法,
val result = tokens.sortBy { it.position }