通过枚举类属性Kotlin进行过滤
如何过滤kotlin中的枚举类? (只是学习)在下面的代码中,文件前面定义的枚举类是PayStatus {PAID,UNPAID}。
fun nextRentDate(): LocalDate? { return rentPaymentSchedule. filter { it.value.paymentStatus is PayStatus.UNPAID}. minBy { it.value.date.toEpochDay() }?.value?.date }
我得到的错误:Kotlin:不兼容的类型:PayStatus.UNPAID和枚举
检查枚举值时,您必须使用==
运算符!
您正在使用it.value.paymentStatus is PayStatus.UNPAID
用于将两个枚举相互比较, is
是用于类型比较的关键字,如此处所述。
这在Java或Kotlin中不起作用,因为编译器告诉:“'是'不允许使用枚举条目,而是使用比较来代替”
Kotlin的比较有两种 : ==
和===
第一个选项==
编译为equals()
,而后者===
等同于Java的==
(比较引用)。
正如我们所知,这对于枚举并没有太大的作用,正如你可以在这个答案中看到的一样。