Если вы определите замыкание как это
def closure = {println "i am a closure"}
Кажется, что у него нет параметров, но на самом деле у него есть один неявный параметр с именем it
. Это подтверждается:
def closure = {println "i am a closure with arg $it"}
closure("foo")
который печатает
«Я замыкаюсь с Аргу Фу»
Если вы действительно хотите определить замыкание, которое принимает 0 параметров, используйте это:
def closure = {-> println "i am a closure"}
Следовательно, ваш пример можно переписать так:
2.times {
println it
mywith {->
println it
}
}