Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. public class A {
  2. @Inject
  3. public A(B b, C c) {
  4. this.b = b;
  5. this.c = c;
  6. }
  7. }
  8.  
  9. public class B {
  10. @Inject
  11. public B(D d) {
  12. this.d = d;
  13. }
  14. }
  15.  
  16. public class C {
  17. @Inject
  18. public C(D d) {
  19. this.d = d;
  20. }
  21. }
  22.  
  23. public class D { /* ... */ }
  24.  
  25. A a = injector.createInstance(A.class);
  26.  
  27. case class A(implicit b: B, c: C)
  28. case class B(implicit d: D)
  29. case class C(implicit d: D)
  30. class D { /* ... */ }
  31.  
  32. implicit val theD = new D
  33. implicit val theB = B()
  34. implicit val theC = C()
  35.  
  36. val a = A()
  37.  
  38. class A {
  39. self: B with C =>
  40. }
  41.  
  42. trait B {
  43. self: D =>
  44. }
  45.  
  46. trait C {
  47. self: D =>
  48. }
  49.  
  50. trait D {}
  51.  
  52. val x = new A with BImpl with CImpl with DImpl
  53.  
  54. val x = new A
  55.  
  56. class A {
  57. self: B with C =>
  58.  
  59. def sum = tripleD + doubleD
  60. }
  61.  
  62. trait B {
  63. self: D =>
  64.  
  65. def tripleD = x * 3
  66. }
  67.  
  68. trait C {
  69. self: D =>
  70.  
  71. def doubleD = x * 2
  72. }
  73.  
  74. trait D extends B with C {
  75. val x: Int
  76. }
  77.  
  78. trait E extends D {
  79. val x = 3
  80. }
  81.  
  82. trait F extends D {
  83. val x = 4
  84. }
  85.  
  86. val a = new A with E
  87. val b = new A with F
  88.  
  89. println("a.sum = " + a.sum)
  90. println("b.sum = " + b.sum)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement