除非通过名称声明参数,否则超级构造函数不能传递自引用

时间:2011-05-13 18:31:26

标签: oop scala object

嗯,我有这样的事情:

trait A

class Serving(a: => A)

object App extends Serving(App.Main) {
  object Main extends A
}

我收到错误super constructor cannot be passed a self reference unless parameter is declared by-name。我可以通过

来解决
object App extends Serving(Serv.Main)

object Serv {
  object Main extends A
}

但我不想。它增加了2个额外.class es,它让我觉得不雅。

使用object App extends Serving(this.Main)也会产生错误。 AServing的结构无法真正改变,但有没有办法解决此错误?

1 个答案:

答案 0 :(得分:1)

您的代码在Scala 2.8.1中编译得很好,即使该参数未按名称声明。