1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
import scala.language.dynamics
object A extends Dynamic {
var a = "a"
def selectDynamic(method:String): String = a
def updateDynamic(method:String)(v:String) { a = v }
}
class B extends Dynamic {
var b = "b"
def selectDynamic(method:String): String = b
def updateDynamic(method:String)(v:String) { b = v }
}
object Test extends App {
assert( A.foo == "a" )
assert( A.bar == "a" )
A.aaa = "aaa"
assert( A.bar == "aaa" )
val b = new B
assert( b.foo == "b" )
assert( b.bar == "b" )
b.bbb = "bbb"
assert( b.bar == "bbb" )
{
println("Running ABTest asserts")
A.a = "a"
(new ABTest).test()
}
println("Done")
}
class ABTest {
def test() {
assert( A.foo == "a" )
assert( A.bar == "a" )
A.aaa = "aaa"
assert( A.bar == "aaa" )
val b = new B
assert( b.foo == "b" )
assert( b.bar == "b" )
b.bbb = "bbb"
assert( b.bar == "bbb" )
}
}
|