Scala,从超级构造函数调用调用实例方法?

时间:2012-02-10 17:50:23

标签: scala super method-call

假设我有以下Scala代码:

class Foo(a: Int)

class Bar(b: Buffer[Int]) extends Foo (sum) {

  def sum = (1 /: b)(_ + _)

}

为什么抱怨从构造函数中调用方法sum?是否不可能通过如此简单的实现来获得这样的行为?我意识到我可以为Bar制作一个伴侣对象,但这不完全是我的意思吗?

PS没有'superconstructor'标签!)))

更新:有哪些替代方案?

2 个答案:

答案 0 :(得分:3)

每次构建Bar的实例时,都会将其所有成员添加到其中。只有在施工完成后才能给其成员打电话。

答案 1 :(得分:1)

如果sum实例上没有调用Bar - 它不是,因为它尚未构建! - 那么它的位置绝对是而不是Bar内。如果Bar是其唯一用户,那么它的自然位置就是伴随对象。

更有趣的问题是为什么你不希望它在自然的地方?