簡體   English   中英

成員變量無法正確轉換為Lambda表達式

[英]Member variables cannot be correctly converted to lambda expressions

如上

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

您應該在大括號內使用 ,然后訪問名稱和年齡。 如果您不這樣做,則編譯器接受您的第一個參數(在this之后, other ),在這種情況下,其名稱Person Object not 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})
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM