Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2013
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 0.67 KB | None | 0 0
  1. string addParameter (string parameters, string newParameter) ()
  2. {
  3.     return parameters is null ? newParameter : parameters ~ "," ~ newParameter;
  4. }
  5.  
  6. struct Proxy (alias func, string parameters, Args ...)
  7. {
  8.     Args args;
  9.  
  10.     auto opDispatch (string name, T) (T value)
  11.     {
  12.         return Proxy!(func, addParameter!(parameters, name), Args, T)(args, value);
  13.     }
  14.  
  15.     auto call () ()
  16.     {
  17.         return callNamed!(func, parameters)(args);
  18.     }
  19. }
  20.  
  21. Proxy!(func, null) named (alias func) ()
  22. {
  23.     return Proxy!(func, null)();
  24. }
  25.  
  26. int foo (int a, int b)
  27. {
  28.     writefln("a=%d b=%d", a, b);
  29.     return b;
  30. }
  31.  
  32. void main ()
  33. {
  34.     named!(foo).b(3).a(4).call();
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement