为什么构造函数的隐式转换需要'this'?

hba*_*sta 4 scala

考虑以下典型的Scala'pimp'代码:

class PimpedA(a:A){
  def pimp() = "hi"
}
implicit def pimpA(a:A) = new PimpedA(a)

new A(){
  pimp()  //<--- does not compile
}
Run Code Online (Sandbox Code Playgroud)

但是,将其更改为:

new A(){
  this.pimp()
}
Run Code Online (Sandbox Code Playgroud)

使它工作.它应该与Scala编译器不一样吗?

编辑:有没有任何解决方案可以让它工作而不必添加this.

Dan*_*ral 5

一点也不.要使它工作,pimp需要是一个对象或一个值的导入成员,它既不是.一个类有一个"隐含的" import this._.它没有一种机制可以自动预先this查看是否可以编译.