我刚开始学习kotlin,而我偶然发现了这个小问题。我有一个对象列表,并在指定的范围内筛选列表。我能够在范围内获得的对象,但是当我改变了范围外束缚,我得到一个空数组,在外部范围内的列表过滤器 - KOTLIN
所以保持这个问题简单,可以说我有像
整数列表original list [1, 2, 3, 4, 5, 6, 7]
和时遇到一个滴管功能,过滤掉的元素
工作状态
fun dropper(args: ArrayList<Int>): List<Int> {
return args.filter { it in 2..6 } // it >= 2 && it <= 6
}
输出被接收作为
[2, 3, 4, 5, 6]
但是当我改变至
fun dropper(args: ArrayList<Int>): List<Int> {
return args.filter { it in 4..2 } // it <= 2 && it >= 4
// it in 4..2 , was suggested by the IDE
}
获得输出为空列表。
我非常确定列表值没有被清除,因为在这个函数被调用之后,我正在将列表传递给给出预期结果的其他操作。
这只是返回原始列表(以及它的副本),因为没有值可以在'4..2'范围内,因此这个过滤器条件总是如此。 (或者换句话说,'4!2'中的it!对于任何'it'值都是正确的,因为'4..2'中没有任何内容)。另外,您在这里使用的操作符实际上是['!in'](https://kotlinlang.org/docs/reference/operator-overloading.html#in)。 – zsmb13