import scala.language.dynamics
classDynamicPersonextendsDynamic{def selectDynamic(key:String):Any = {
println(s"field '$key' selected")
}
def updateDynamic(key:String)(args:Any) = {
println(s"field '$key' update with value '$args'")
}
def applyDynamic(name:String)(args:Any) = {
println(s"method '$name' called with argument $args")
}
def applyDynamicNamed(name: String)(args: (String, Any)*) = {
println(s"method '$name' called with arguments ${args.mkString("'", "', '", "'")}")
}
}
objectA {def main (args:Array[String]): Unit = {
val person = new DynamicPerson
person.name
person.age = 23
person.sayHello("hello, world.")
person.salary(pay = 123, time = 30)
}
}
➜ classes scala A
field 'name' selected
field 'age' update with value '23'
method 'sayHello' called with argument hello, world.
method 'salary' called with arguments '(pay,123)', '(time,30)'