Groovy closures can be invoked directly after we have defined them. This way we get the result immediately and can assign it to a variable. We use call()
or ()
after we have defined the closure, so the closure code is executed and the return value of the closure is assigned to the variable.
def date = { def d = new Date() d.set year: 2010, month: Calendar.DECEMBER, date: 1 d.format "dd-MM-yyyy" }() assert date == '01-12-2010' def text = { def result = '' "mrhaki".size().times { result += it } result }.call() assert text == '012345'