假设我有以下Scala代码:
class Foo(a: Int)
class Bar(b: Buffer[Int]) extends Foo (sum) {
def sum = (1 /: b)(_ + _)
}
为什么抱怨从构造函数中调用方法sum
?是否不可能通过如此简单的实现来获得这样的行为?我意识到我可以为Bar
制作一个伴侣对象,但这不完全是我的意思吗?
PS没有'superconstructor'标签!)))
更新:有哪些替代方案?
答案 0 :(得分:3)
每次构建Bar
的实例时,都会将其所有成员添加到其中。只有在施工完成后才能给其成员打电话。
答案 1 :(得分:1)
如果sum
实例上没有调用Bar
- 它不是,因为它尚未构建! - 那么它的位置绝对是而不是在Bar
内。如果Bar
是其唯一用户,那么它的自然位置就是伴随对象。
更有趣的问题是为什么你不希望它在自然的地方?