如上所述
data class Person(val name: String, val age: Int) : Comparable<Person> {
override fun compareTo(other: Person): Int {
return compareValuesBy(this, other, Person::name, Person::age)
}
}
上面的代码运行正常,当我转换为以下代码时,我无法获得正确的结果。
data class Person(val name: String, val age: Int) : Comparable<Person> {
override fun compareTo(other: Person): Int {
return compareValuesBy(this, other, { name }, { age })
}
}
答案 0 :(得分:1)
您应该在大括号内使用 it ,然后访问姓名和年龄。如果您不这样做,则编译器接受您的第一个参数(在此之后,其他之后),在这种情况下,该名称为 name 对象不是字符串
此代码将为您工作:
data class Person(val name: String, val age: Int) : Comparable<Person> {
override fun compareTo(other: Person): Int {
return compareValuesBy(this,other,{it.name},{it.age})
}
}