>> printers[i] = () { write(i); }; > > I know it looks silly but if you make that: > > printers[i] = (int i) { return () { write(i); }; }(i); > > it will do what you want. Or, the slightly prettier (imo) printers[i] = ((i) => () => write(i))(i); Or, if you need to force it to return void: printers[i] = ((i) => {write(i);})(i);