Explain this Groovy code? -


def foo(n) {     return {n += it} } 

the code defines function/method foo returns closure. purpose of understanding code, can think of closure method has no name , not attached object.

the closure can invoked passing single argument. value returned closure n += it it default name used refer closure's argument. if wanted closure's argument have different name, e.g. closureparam need define explicity:

def foo(n) {     return {closureparam -> n += closureparam} } 

the -> separates closure's parameter list closure body. if no parameter list defined, default single parameter named it. maybe example of invoking closure help:

closure closure = foo(2) def closurereturnval = closure.call(4)  assert closurereturnval == 6 // because 4 + 2 == 6  // can omit .call when calling closure, following works closure = foo(3) assert 8 == closure(5)  

Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

android - layout with fragment and framelayout replaced by another fragment and framelayout -