Переменные-члены не могут быть правильно преобразованы в лямбда-выражения - PullRequest
0 голосов
/ 14 января 2019

Как указано выше

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 голосов
/ 14 января 2019

Вы должны использовать it в фигурных скобках, а затем указать имя и возраст. если вы не сделаете этого, компилятор примет ваш первый аргумент (после this , other ), который является name в этом случае как Person Объект не String

Этот код будет работать для вас:

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