File tree Expand file tree Collapse file tree 7 files changed +110
-1
lines changed Expand file tree Collapse file tree 7 files changed +110
-1
lines changed Original file line number Diff line number Diff line change 1+ import scala .language .dynamics
2+
3+ class DynamicTest extends Dynamic {
4+ def selectDynamic (name : String ) = s " value of $name"
5+ def updateDynamic (name : String )(value : Any ) {
6+ println(s " You have just updated property ' $name' with value: $value" )
7+ }
8+ }
9+
10+ object MyApp extends App {
11+ def testing () {
12+ val test = new DynamicTest
13+ test.firstName = " John"
14+ }
15+
16+ testing()
17+ }
Original file line number Diff line number Diff line change 1- import language .dynamics
1+ import scala . language .dynamics
22
33object Test {
44 def main (args : Array [String ]) {
Original file line number Diff line number Diff line change 1+ import scala .language .dynamics
2+
3+ class Dyn extends Dynamic {
4+ def selectDynamic (s : String ): Dyn = new Dyn
5+ def get [T ]: T = null .asInstanceOf [T ]
6+ }
7+
8+ object Foo {
9+ val dyn = new Dyn
10+ dyn.foo.bar.baz.get[String ]
11+ }
Original file line number Diff line number Diff line change 1+ Running ABTest asserts
2+ Done
Original file line number Diff line number Diff line change 1+ import scala .language .dynamics
2+
3+ object A extends Dynamic {
4+ var a = " a"
5+
6+ def selectDynamic (method: String ): String = a
7+
8+ def updateDynamic (method: String )(v: String ) { a = v }
9+ }
10+
11+ class B extends Dynamic {
12+ var b = " b"
13+
14+ def selectDynamic (method: String ): String = b
15+
16+ def updateDynamic (method: String )(v: String ) { b = v }
17+ }
18+
19+ object Test extends App {
20+ assert( A .foo == " a" )
21+ assert( A .bar == " a" )
22+ A .aaa = " aaa"
23+ assert( A .bar == " aaa" )
24+
25+ val b = new B
26+ assert( b.foo == " b" )
27+ assert( b.bar == " b" )
28+ b.bbb = " bbb"
29+ assert( b.bar == " bbb" )
30+
31+ {
32+ println(" Running ABTest asserts" )
33+ A .a = " a"
34+ (new ABTest ).test()
35+ }
36+
37+ println(" Done" )
38+ }
39+
40+ class ABTest {
41+ def test () {
42+ assert( A .foo == " a" )
43+ assert( A .bar == " a" )
44+ A .aaa = " aaa"
45+ assert( A .bar == " aaa" )
46+
47+ val b = new B
48+ assert( b.foo == " b" )
49+ assert( b.bar == " b" )
50+ b.bbb = " bbb"
51+ assert( b.bar == " bbb" )
52+ }
53+ }
Original file line number Diff line number Diff line change 1+ Type in expressions to have them evaluated.
2+ Type :help for more information.
3+
4+ scala>
5+
6+ scala> import scala.language.dynamics
7+ import scala.language.dynamics
8+
9+ scala> class Dyn(m: Map[String, Any]) extends Dynamic { def selectDynamic[T](s: String): T = m(s).asInstanceOf[T] }
10+ defined class Dyn
11+
12+ scala> new Dyn(Map("foo" -> 10)).foo[Int]
13+ res0: Int = 10
14+
15+ scala>
16+
17+ scala>
Original file line number Diff line number Diff line change 1+ import scala .tools .partest .ReplTest
2+
3+ object Test extends ReplTest {
4+ def code = """
5+ import scala.language.dynamics
6+ class Dyn(m: Map[String, Any]) extends Dynamic { def selectDynamic[T](s: String): T = m(s).asInstanceOf[T] }
7+ new Dyn(Map("foo" -> 10)).foo[Int]
8+ """
9+ }
You can’t perform that action at this time.
0 commit comments