我认为,如果我有多个filter()调用。该集合将迭代多次。我想要这样的代码:
最好生成完整的内联
。set.filter{a>10}.filter{a<20}.forEach{doSomething()}
for(e in set){ // Only iterate the set one time.
if(e.a>10){
if(e.a<20)
doSomething()
}
}
答案 0 :(得分:0)
我认为您可以使用范围运算符来做到这一点。
set.filter{ it.a in 10..20 }.forEach{ doSomething() }
或者如果您有任何复杂的条件需要完成,那么您可以创建一个返回布尔值的方法。
set.filter{ isInRange(it.a, x, y) }.forEach{ doSomething() }
// create a function
fun isInRange(value: Int, x: Int, y: Int) = value in x..y // both inclusive