考虑以下典型的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.?
一点也不.要使它工作,pimp需要是一个对象或一个值的导入成员,它既不是.一个类有一个"隐含的" import this._.它没有一种机制可以自动预先this查看是否可以编译.