File tree 2 files changed +68
-0
lines changed
2 files changed +68
-0
lines changed Original file line number Diff line number Diff line change
1
+ break Test$ 24
2
+ eval b1
3
+ result foo
4
+ eval size.value
5
+ result 2
6
+ eval b2.take(size)
7
+ result ba
8
+ eval m(bar)
9
+ result B(bar)
10
+ eval new B("fizz")
11
+ result fizz
12
+ eval b1 + new B("buzz")
13
+ result foobuzz
14
+ eval new Msg(new Size(3))
15
+ result Hel
16
+
17
+ break B$ 6
18
+ eval x
19
+ result foo
20
+ eval take(size)
21
+ result fo
22
+
23
+ break Test$ 25
24
+ eval b1 = new B("fizz")
25
+ result ()
26
+ eval size = new Size(3)
27
+ result ()
28
+
29
+ break Test$ 29
30
+ eval a
31
+ result B(fizzbar)
32
+ eval a.take(this.size)
33
+ result B(fiz)
34
+ // TODO fix eval a.asInstanceOf[B] + B("buzz")
35
+ // TODO fix result fizzbarbuzz
36
+
37
+ break B$ 6
Original file line number Diff line number Diff line change
1
+ trait A extends Any :
2
+ def take (size : Size ): A
3
+
4
+ class B (val x : String ) extends AnyVal with A :
5
+ def take (size : Size ): B =
6
+ new B (x.take(size.value))
7
+
8
+ def + (b : B ): B =
9
+ new B (x + b.x)
10
+
11
+ override def toString : String = s " B( $x) "
12
+
13
+ class Size (val value : Int )
14
+
15
+ class Msg (size : Size ):
16
+ override def toString = " Hello, World!" .take(size.value)
17
+
18
+ object Test :
19
+ var b1 = new B (" foo" )
20
+ private var size = new Size (2 )
21
+
22
+ def main (args : Array [String ]): Unit =
23
+ val b2 = bar
24
+ println(b1.take(size))
25
+ println(m(b1 + b2))
26
+
27
+ def m (a : A ): A =
28
+ val size = new Size (5 )
29
+ a.take(size)
30
+
31
+ def bar : B = new B (" bar" )
You can’t perform that action at this time.
0 commit comments