假设我有一个闭包:
def increment = {value,step -> value + step }
现在我想循环遍历整数集合的每个项目,用5增加它,并将新元素保存到新集合:
def numbers = [1..10] def biggerNumbers = numbers.collect { it + 5 }
现在我希望通过使用增量闭包来实现相同的结果.我怎样才能做到这一点?
应该是这样的(下面的代码错误):
def biggerNumbers = numbers.collect increment(it,5) //what's the correct name of 'it'??
解决方法
你的问题的解决方案是在闭包中嵌套你的增量调用:
def biggerNumbers = numbers.collect {increment(it,5)}
如果你想将一个premade闭包传递给collect,你应该让它与collect兼容 – 接受一个参数:
def incrementByFive = {it + 5} def biggerNumbers = numbers.collect incrementByFive