Guest User

Untitled

a guest
Jan 24th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. import std.stdio;
  2. import std.string : format;
  3.  
  4. enum Op
  5. {
  6. Equals,
  7. NotEquals,
  8. }
  9.  
  10. struct BinaryExpr(T)
  11. {
  12. T left;
  13. T right;
  14. Op op;
  15. }
  16.  
  17. struct Column(T)
  18. {
  19. T value;
  20. alias value this;
  21.  
  22. bool opEquals(T b)
  23. {
  24. return b == value;
  25. }
  26.  
  27. BinaryExpr!T opEquals(T b)
  28. {
  29. return BinaryExpr!T(this, b, Op.Equals);
  30. }
  31. }
  32.  
  33. void filter(T)(BinaryExpr!T e)
  34. {
  35. writeln(e);
  36. }
  37.  
  38. class User
  39. {
  40. Column!int id;
  41. Column!string name;
  42. Column!string password;
  43.  
  44. public override string toString()
  45. {
  46. return "%d, %s, %s".format(id, name, password);
  47. }
  48. }
  49.  
  50. void main()
  51. {
  52. auto user = new User();
  53. with (user)
  54. {
  55. id = 10;
  56. name = "John Doe";
  57. password = "qwe123";
  58. }
  59.  
  60. filter(user.id == 10);
  61.  
  62. // Here is the error
  63. if (user.id == 10) {
  64. writeln("User ID is 10");
  65. }
  66.  
  67. writeln(user);
  68. }
Add Comment
Please, Sign In to add comment