我有一个groovy集合,它是一个数组,包含从0到' n'的值。当出现一系列条件时,我需要找到一个特定的数组索引。并且,我不需要扫描数组的每个值,但可以跳过预定义的间隔。例如,查找数组中每10个值的条件。有人能告诉我一种方法吗? 例如,我想在下面做这样的事情
def alltimes = [0 . . . . . 10000]
def end_time = 10000
def time = 0
while(time <= end_time)
{
// check the condition for alltimes[time]
if(condition_satisfied){
println "condition satisfied at time ${time}"
break
}
time = time + 50
}
当我探索所有可用的数组方法时,我没有找到任何一个可以允许跳转变量的方法,而不是每个方法中的每一个,每个方法都有索引。
好像我需要使用元类并创建一个新方法?
答案 0 :(得分:2)
您可以使用find
:
def allTimes = 0..10000
Closure<Boolean> checkCondition = { all, single ->
single > 300
}
(0..10000).step( 50 ).find { time -> checkCondition( allTimes, time ) }
这适合做饭:
def allTimes = 0..10000
Closure<Boolean> checkCondition = { all, single ->
single > 300
}
(0..10000).step( 50 ).find checkCondition.curry( allTimes )