在this()函数之前写入计算代码

时间:2015-05-13 08:09:54

标签: scala

任何人都可以告诉我为什么我不能在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)
        }
     }

1 个答案:

答案 0 :(得分:1)

你不能因为你必须在辅助构造函数中调用另一个构造函数作为第一件事。你可以做的是使用块表达式作为参数:

class A(a:Int) {
  def this() = this({
    val tmp = 3
    tmp
  })
}