Kotlin: Operator '==' cannot be applied to 'kotlin.Int' and 'Person?' 错误

标签 kotlin

我有“Kotlin In Action”MEAP 一书中的以下代码,它应该找到组中人员的最大年龄并返回该年龄段的所有人员:

data class Person(val name: String, val age: Int)
val people = listOf(Person("Alice", 29), Person("Bob", 31))
people.filter {it.age == people.maxBy(Person::age)}

但是,我收到以下错误:“Kotlin:运算符‘==’不能应用于‘kotlin.Int’和‘Person?’。”如何修复代码以使其正常工作?

最佳答案

使用 map + max 而不是 maxBy。还将最大值提取到变量以避免多次计算它:

data class Person(val name: String, val age: Int)
val people = listOf(Person("Alice", 29), Person("Bob", 31))
val maxAge = people.map(Person::age).max()
people.filter { it.age == maxAge }

关于Kotlin: Operator '==' cannot be applied to 'kotlin.Int' and 'Person?' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36948888/

相关文章:

generics - kotlin,可以调用 null.also{}

android - android studio 中的 Kotlin 插件错误

functional-programming - Kotlin Either monad:重构构造函数调用以处理CPS

Kotlin 相当于 C# Task.WhenAll

java - 回调获取响应 Sync kotlin

ant - 使用 gradle-script-kotlin 中的 ant 任务

android - 更新到 Kotlin 1.3.30 后 "Unresolved reference: Parcelize"

Android Studio 不断显示缺少权限,即使我正在明确处理它。我如何解决它?

java - java.lang.UnsupportedOperationException : Reflective setAccessible(true) disabled

android - kotlin-stdlib-jdk 依赖的目的是什么?