我有一个集合,在Groovy中使用removeIf {}
进行处理。在块内,我可以访问一些it
标识符。这是什么,它在哪里记录?
我有一个集合,在Groovy中使用removeIf {}
进行处理。在块内,我可以访问一些it
标识符。这是什么,它在哪里记录?
it
是闭包提供的隐式变量。当闭包没有显式声明参数时,它就可用。
当闭包与集合方法一起使用时,例如removeIf
,it
将指向当前迭代项。
这就像你声明了这个:
List<Integer> integers = [1, 2, 3]
for(Integer it: integers) {print(it)}
each
(这只是一个例子)时,它会被隐式提供。integers.each{print(it)} //it is given by default
或者
integers.removeIf{it % 2 == 0} //it is the argument to Predicate.test()
it
将会随着迭代而依次取值为1
,2
和3
。
当然,你也可以通过在闭包中声明参数来重命名变量:
integers.each{myInteger -> print(myInteger)}
it
变量。文档有更多细节。it
的单一参数。下面是一个在Groovy控制台中可以运行的示例。Closure incrementBy4 = { it + 4 }
// test it
assert incrementBy4(6) == 10
Closure incrementBy4 = { it -> it + 4 }
以下是使用removeIf
的另一个示例:
Closure remove2 = { it == 2 }
def numbers = [1, 2, 3]
numbers.removeIf(remove2)
// verify that it worked as expected
assert numbers == [1, 2]