成员变量无法正确转换为Lambda表达式

时间:2019-01-14 09:18:52

标签: kotlin kotlin-extension

如上所述

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 })
    }
}

1 个答案:

答案 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})
   }
}