我试图从一个更大的不同类型的列表(类型为CustomType)中删除一个项目列表(类型为String)。为此,我在Kotlin中使用了minus()函数,但在IntelliJ中收到了一个Type mismatch警告。如何在kotlin中处理此类情况。
fun someMethod(A: CustomTypeA): List<CustomTypeB> {
val list_1: List<CustomTypeB> = listOf()
// some logic that puts values into list_1
if (list_1.count > 0) {
return list_1.minus(
A.excludelist
) // type mismatch: inferred type is String! but CustomTypeB was expected
}
}
1条答案
按热度按时间0vvn1miw1#
我猜您希望排除通过某些属性与它们匹配的元素。
如果是,最小工作示例:
所以,我们在这里做的不是“删除”,而是过滤。没有必要添加
isEmpty
检查-对空列表进行过滤将返回空列表。或者,还有另一种方法,即操作符重写:
首先,定义运算符:
然后,您可以拨打您期望的电话:
但是,在覆盖运算符时,一个非常好的实践是定义所有可能的运算符以保持一致性(我的意思是您也应该覆盖运算符
minusAssign
)。因此,恕我直言,在您的情况下,最好只使用过滤。