Scala 2.9到2.10之间的动态性状差异

Scala 2.9到2.10之间的动态性状差异,scala,Scala,我编写了一段代码来测试Dynamic trait功能: class Foo extends Dynamic { def selectDynamic(name: String) { println("selectDynamic: " + name) } def applyDynamic(name: String)(args: Any*) { println("applyDynamic: " + name) } def applyDynamicNamed(name

我编写了一段代码来测试Dynamic trait功能:

class Foo extends Dynamic {
  def selectDynamic(name: String) {
    println("selectDynamic: " + name)
  }
  def applyDynamic(name: String)(args: Any*) {
    println("applyDynamic: " + name)
  }
  def applyDynamicNamed(name: String)(args: (String, Any)*) {
    println("applyDynamicNamed: " + name)
  }
  def updateDynamic(name: String)(value: Any) {
    println("updateDynamic: " + name)
  }
}

object Test {
  def main(args: Array[String]) {
    val foo = new Foo
    foo.bar(5)     //1
    foo.bar(x = 5) //2
    foo.bar        //3
    foo.baz = 5    //4
  }
}
问题是它不能在Scala 2.9和2.10中编译,因为
main
中有第四行:

error: reassignment to val
foo.baz = 5
如果我对该字符串进行注释,2.9将对第二行进行投诉:

error: not found: value x
foo.bar(x = 5)
同时,2.10将编译,程序将生成:

applyDynamic: bar
applyDynamicNamed: bar
selectDynamic: bar

所以现在我想知道我是否做错了什么(可能错过了一些依赖项)?Scala 2.9和2.10中的动态之间有区别吗?
foo.baz=5有什么问题?

这是一个错误:

错误:值更新不是单元的成员;foo.baz()=5