任何人都可以告诉我为什么我不能在scala类中的this()函数之前编写计算代码?
//compile pass
class A(a:Int) {
def this() = {this(3)}
}
//compile error
class A(a:Int) {
def this() = {
val tmp = 3 //or other complex calculations( error: 'this' expected but 'val' found.)
this(tmp)
}
}
答案 0 :(得分:1)
你不能因为你必须在辅助构造函数中调用另一个构造函数作为第一件事。你可以做的是使用块表达式作为参数:
class A(a:Int) {
def this() = this({
val tmp = 3
tmp
})
}