fork download
  1. import std.stdio;
  2.  
  3. void seq_apply(uint ArgNum, Func, Args...)(Func func, Args args) {
  4. func(args[0], args[1 .. ArgNum + 1]);
  5. static if (args.length > ArgNum + 1) {
  6. seq_apply!(ArgNum)(func, args[ArgNum + 1 .. args.length]);
  7. }
  8. }
  9.  
  10. class obj {
  11. void setxxx(int x) {
  12. writefln("setxxx: %d", x);
  13. }
  14. void setyyy(int y) {
  15. writefln("setyyy: %d", y);
  16. }
  17. }
  18.  
  19. void f(obj x, int a0, int a1) {
  20. x.setxxx(a0); x.setyyy(a1);
  21. }
  22.  
  23. void main(string[] argv) {
  24. obj x1 = new obj(), x2 = new obj();
  25. seq_apply!(2u)(&f,
  26. x1, 1, -1,
  27. x2, 2, -2);
  28. //seq_apply!2u((obj x, int a0, int a1) => { x.setxxx(a0); x.setyyy(a1); },
  29. // x1, 1, -1,
  30. // x2, 2, -2);
  31. }
  32.  
Success #stdin #stdout 0.01s 2120KB
stdin
Standard input is empty
stdout
setxxx: 1
setyyy: -1
setxxx: 2
setyyy: -2