我剛開始學習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