File tree 2 files changed +29
-0
lines changed
2 files changed +29
-0
lines changed Original file line number Diff line number Diff line change
1
+ trait Entity [M , T , P ]:
2
+ extension (me : M ) def receive (sender : T )(msg : P )(using Entity [T , M , P ]): Unit
3
+ extension (me : M ) def name (): String
4
+
5
+ class GreetingPerson (private val name : String )
6
+
7
+ object GreetingPerson :
8
+ given GreetingPersonEntity : Entity [GreetingPerson , GreetedPerson , String ] with
9
+ extension (me : GreetingPerson ) def receive (sender : GreetedPerson )(msg : String )(using Entity [GreetedPerson , GreetingPerson , String ]): Unit =
10
+ println(f " Thanks for saying $msg, ${sender.name()}" )
11
+
12
+ extension (me : GreetingPerson ) def name () =
13
+ me.name
14
+
15
+ class GreetedPerson (private val name : String )
16
+
17
+ object GreetedPerson :
18
+ given GreetedPersonEntity : Entity [GreetedPerson , GreetingPerson , String ] with
19
+ extension (me : GreetedPerson ) def receive (sender : GreetingPerson )(msg : String )(using Entity [GreetingPerson , GreetedPerson , String ]): Unit =
20
+ println(f " Thanks for saying $msg, ${sender.name()}" )
21
+
22
+ extension (me : GreetedPerson ) def name () =
23
+ me.name
Original file line number Diff line number Diff line change
1
+ class Foo (private val name : String )
2
+
3
+ extension (f : Foo ) def name () = " bar"
4
+
5
+ @ main def Test =
6
+ assert(Foo (" foo" ).name() == " bar" )
You can’t perform that action at this time.
0 commit comments