在scala构造函数中定义局部变量

时间:2011-07-09 15:59:32

标签: scala

我有一个scala类:

class Foo {

  def this(st: String) {
      var baz = List[String]()
      var jaz = "one" + st
      // more code logic


  }

} 

首先上面的代码没有编译。其次,我希望baz和jaz是上面单独构造函数本地的私有变量,而不是实例变量。

如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

它不能编译,因为必须在辅助构造函数中发生的第一件事是对主构造函数的调用。我不明白第二个问题,因为你声明的变量已经是私有的

答案 1 :(得分:1)

这样的事情可能就是你在寻找什么?

class Foo(st: String) {

  val myInstance = {
      var baz = List[String]()
      var jaz = "one" + st
      jax + baz.mkString(":")
  }
}

您的类的主体的构造函数。如果你想拥有一些临时值,你可以用你想要的任何东西声明一个块;该块可以返回一个值,您可以将该值存储在实例变量中,在本例中为myInstance